Ubuntu18.04 配置 Hadoop 3.1.0 分布式集群

环境

操作系统 Ubuntu Server 18.04
Hadoop 版本: Hadoop 3.1.0

创建Hadoop用户设置SSH 免密登录

创建Hadoop账户

sudo useradd -m hadoop -s /bin/bash

设置密码

sudo passwd hadoop

增加管理员权限

sudo adduser hadoop sudo

更新系统

sudo apt-get update

安装SSH 配置SSH 免密登录

sudo apt-get install openssh-server
ssh localhost

首次登录会提示,输入Yes 按提示输入密码 就可以登录本机。
我们需要配置成免密登录。利用 ssh-keygen 生成密钥,并将密钥加入到授权中。

exit                       
cd ~/.ssh/                
ssh-keygen -t rsa            
cat ./id_rsa.pub >> ./authorized_keys  #

配置Java环境

下载安装包 上传到用户目录

创建目录作为JDK的安装目录,这里选择安装位置为:/usr/java/
解压文件带/usr/java/目录下,cd到文件下载的位置
修改jdk1.8.0_171为jdk。 方便配置jdk

sudo mkdir /usr/java
sudo tar zxvf jdk-8u171-linux-x64.tar.gz -C /usr/java/
sudo mv /usr/java/jdk1.8.0_171  /usr/java/jdk

配置环境变量

sudo vim /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$JAVA_HOME/bin" 
export CLASSPATH=$JAVA_HOME/lib$JAVA_HOME/jre/lib 
export JAVA_HOME=/usr/java/jdk 
export JRE_HOME=${JAVA_HOME}/jre
sudo vim  /etc/profile
JAVA_HOME=/usr/java/jdk
export JRE_HOME=/usr/java/jdk/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

更新环境变量 查看Java是否安装成功

source /etc/environment
source /etc/profile
java -version

配置Hadoop

下载安装包 上传到用户目录

sudo tar -zxvf  /home/hadoop/hadoop-3.1.0.tar.gz -C /usr/local    # 解压到/usr/local中
sudo mv  /usr/local/hadoop-3.1.0/  /usr/local/hadoop            # 将文件夹名改为hadoop
sudo chown -R hadoop /usr/local/hadoop       # 修改文件权限
cd  /usr/local/hadoop  # 进入hadoop 安装目录
./bin/hadoop version #查看hadoop 版本

集群配置

为了方便配置建议关闭防火墙以及卸载iptables

sudo  ufw enable|disable
sudo apt-get remove iptables

修改Hosts文件

sudo vim /etc/hosts

172.16.111.233    hadoopmaster.quantilogic.com.cn
172.16.111.234    hadoopslave1.quantilogic.com.cn
172.16.111.235    hadoopslave2.quantilogic.com.cn

安装pdsh和ssh 确认master节点可以SSH免密登录到slave节点

#所有节点执行
sudo apt install ssh pdsh
sudo sh -c "echo ssh > /etc/pdsh/rcmd_default"

#master 主机执行
ssh-copy-id -i ~/.ssh/id_rsa.pub  hadoopmaster.quantilogic.com.cn
ssh-copy-id -i ~/.ssh/id_rsa.pub  hadoopslave1.quantilogic.com.cn
ssh-copy-id -i ~/.ssh/id_rsa.pub  hadoopslave2.quantilogic.com.cn

修改Hadoop 配置文件

配置文件路径 /usr/local/hadoop/etc/hadoop。修改完成以后上传到所有的hadoop节点

core-site.xml

<configuration>
  <property>
      <name>fs.defaultFS</name>
      <value>hdfs://hadoopmaster.quantilogic.com.cn:9000</value>
  </property>
  <property>
   <name>hadoop.tmp.dir</name>
   <value>/usr/local/hadoop/tmp</value>
  </property>
</configuration>

hadoop-env.sh

修改Java_Home路径

export JAVA_HOME=/usr/java/jdk

hdfs-site.xml

设置Hdfs文件保存份数以及路径

<configuration>
<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>
<property>
  <name>dfs.name.dir</name>
  <value>/usr/local/hadoop/hdfs/name</value>
</property>
<property>
  <name>dfs.data.dir</name>
  <value>/usr/local/hadoop/hdfs/data</value>
</property>
</configuration>

mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>yarn.app.mapreduce.am.env</name>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
    <property>
        <name>mapreduce.map.env</name>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
    <property>
        <name>mapreduce.reduce.env</name>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
</configuration>

workers

设置为slave节点的主机名

hadoopslave1.quantilogic.com.cn
hadoopslave2.quantilogic.com.cn

yarn-env.sh

增加java安装路径

export JAVA_HOME=/usr/java/jdk

yarn-site.xml

<configuration>
  <property>
          <name>yarn.resourcemanager.hostname</name>
          <value>hadoopmaster.quantilogic.com.cn</value>
  </property>
  <property>
          <name>yarn.resourcemanager.webapp.address</name>
          <value>hadoopmaster.quantilogic.com.cn:8088</value>
  </property>
  <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
      <value>false</value>
  </property>
  <property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
      <value>false</value>
  </property>
</configuration>

测试运行

在master 节点执行相关脚本进行Hadoop 测试。

初始化HDFS ,只需要执行一次。

/usr/local/hadoop/bin/hdfs namenode -format myClusterName # 初始化HDFS

启动HDFS和yarm

/usr/local/hadoop/sbin/start-dfs.sh  #启动HDFS   
/usr/local/hadoop/sbin/start-yarn.sh #  启动yarn

在三台主机上执行jps 查看运行情况。正常情况下显示如下
master节点

13905 ResourceManager
13669 SecondaryNameNode
17752 Jps
13374 NameNode

slave节点

41413 Jps
39432 NodeManager
39244 DataNode

在浏览器输入master节点 http://master:9870 和http://master:8088 查看节点运行情况。

在HDFS中创建用户目录

./bin/hdfs dfs -mkdir -p /user/hadoop

将 ./etc/hadoop 中的 xml 文件作为输入文件复制到HDFS中

./bin/hdfs dfs -mkdir input
./bin/hdfs dfs -put ./etc/hadoop/*.xml input

运行MapReduce作业 将输出保存到output文件夹

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'

将运行结果取回本地,也可以直接浏览器http://master:9870 中查看

rm -r ./output    # 先删除本地的 output 文件夹(如果存在)
./bin/hdfs dfs -get output ./output     # 将 HDFS 上的 output 文件夹拷贝到本机
cat ./output/*

frp在Windows下后台运行

在windows下使用nssm 将frp注册为服务.使其开机自启动&后台运行.

下载nssm 解压nssm到frp根目录。

以管理员身份运行cmd。 输入 cd D:\frp_0.18.0_windows_amd64  回车

运行 nssm install frpc

点击path选择frp相关目录,输入相关参数。点击Install service 即可 安装为服务.如有安全软件阻挡,允许即可。在服务管理中查找frpc服务并启动。

 
热加载 ./frps -c ./frps.ini –reload

服务端后台运行脚本 nohup ./frps -c ./frps.ini &

找到进程   ps -ef|grep frps   或者 lsof -i:7000

结束进程  kill -9 xxxx

nginx 配置

server {
listen 80;
server_name *.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_hide_header X-Powered-By;
}
}

 

Visual Studio 2017 连接Azure设置

由于众所周知的原因导致微软的Azure平台分为Global Azure和由世纪互联运营的中国区 Azure,并且数据互不相通。目前Global Azure已经可以用国内的电话号码验证。准备一张Visa或者Master信用卡就可以愉快的使用了。今天在切换国区账号和全球账号遇到一些坑,整理记录一下。

使用 Visual Studio 2017,连接中国区 Azure

新建一个 JSON 文件 AadProvider.Configuration.json,文件内容如下

{
"AuthenticationQueryParameters": null,
"AsmEndPoint": "https://management.core.chinacloudapi.cn",
"Authority": "https://login.chinacloudapi.cn/",
"AzureResourceManagementEndpoint": "https://management.chinacloudapi.cn/",
"AzureResourceManagementAudienceEndpoints": [ "https://management.core.chinacloudapi.cn/" ],
"ClientIdentifier": "872cd9fa-d31f-45e0-9eab-6e460a02d1f1",
"EnvironmentName": "Mooncake",
"GraphEndpoint": "https://graph.chinacloudapi.cn",
"MsaHomeTenantId": "f577cd82-810c-43f9-a1f6-0cc532871050",
"NativeClientRedirect": "urn:ietf:wg:oauth:2.0:oob",
"PortalEndpoint": "http://manage.windowsazure.cn",
"ResourceEndpoint": "https://management.core.chinacloudapi.cn/",
"ValidateAuthority": true,
"VisualStudioOnlineEndpoint": "https://app.vssps.visualstudio.com/",
"VisualStudioOnlineAudience": "499b84ac-1321-427f-aa17-267ca6975798"
}
  1. 确保已登出并关闭 Visual Studio。
  2. 删除 %temp%\servicehub 文件夹(详细路径为 C:\Users%USERPROFILE%\AppData\Local\Temp\servicehub)。
  3. 把前面新建的 JSON 文件 (AadProvider.Configuration.json) 拷贝到 %localappdata%.IdentityService\AadConfigurations(详细路径为 C:\Users%USERPROFILE%\AppData\Local.IdentityService\AadConfigurations, AadConfigurations 文件夹可能不存在,需要手动创建)。
  4. 重启 VS 并添加中国 Azure 账户即可。

使用 Visual Studio 2017,连接Global Azure

  1. 确保已登出并关闭 Visual Studio。
  2. 删除文件夹。%localappdata%.IdentityService\AadConfigurations
  3. 重启 VS 即可连接 Global Azure。

切换Global Azure方法为官方解决方案,但实际操作过程中,会导致Visual Studio 登录账号失败,要求重复验证,无法切换。正确做法如下。

  1. 确保已登出并关闭 Visual Studio。
  2. 删除文件夹。%localappdata%.IdentityService\内的所有文件
  3. 打开全局代理(非必需 网络不稳定情况下使用)
  4. 重启VS即可重新连接 Global Azure

未能加载文件或程序集XXX或它的某一个依赖项。试图加载格式不正确的程序。

未能加载文件或程序集“xxx, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。试图加载格式不正确的程序。


原因:操作系统是64位的,但发布的程序引用了一些32位的ddl,所以出现了兼容性的问题
解决方案一:如果是64位机器,IIS——应用程序池——高级设置——启用32位应用程序 :True
解决方案二:修改项目属性——生成——目标平台(比如,X86\X64)

Centos系统VPS主机初始化脚本整理

常用命令
sudo su #切换root
yum update #更新系统
last #登录成功的用户信息
last | less #最新的登录记录在最前面,所以可以用 一下命令来查看
lastb #查看登录失败的用户信息
tail /var/log/secure #查看登录日志
echo > /var/log/btmp #清除登陆系统失败的记录
安装最新内核并开启 BBR

参考秋水逸冰博客

使用root用户登录,运行以下命令:

wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh

安装完成后,脚本会提示需要重启 VPS,输入 y 并回车后重启。
重启完成后,进入 VPS,验证一下是否成功安装最新内核并开启 TCP BBR,输入以下命令:

uname -r

查看内核版本,显示为最新版就表示 OK 了

sysctl net.ipv4.tcp_available_congestion_control

返回值一般为:
net.ipv4.tcp_available_congestion_control = bbr cubic reno

sysctl net.ipv4.tcp_congestion_control

返回值一般为:
net.ipv4.tcp_congestion_control = bbr

sysctl net.core.default_qdisc

返回值一般为:
net.core.default_qdisc = fq

lsmod | grep bbr

返回值有 tcp_bbr 模块即说明 bbr 已启动。注意:并不是所有的 VPS 都会有此返回值,若没有也属正常。

科学上网

参考秋水逸冰博客

常规版 Windows 客户端
https://github.com/shadowsocks/shadowsocks-windows/releases
ShadowsocksR 版 Windows 客户端
https://github.com/shadowsocksrr/shadowsocksr-csharp/releases

使用root用户登录,运行以下命令:

wget --no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh
chmod +x shadowsocks-all.sh
./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log
Kcptun服务端

参考扩软博客
确定加速端口

netstat -nl | grep 8388

脚本信息

wget --no-check-certificate https://github.com/kuoruan/shell-scripts/raw/master/kcptun/kcptun.sh
chmod +x ./kcptun.sh
./kcptun.sh
安装宝塔面板
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh

关于2017

想了很久,不知道写什么标题。依稀记得去年在Twitter还是FaceBook上简短的写了关于2016年的总结以及2017年的计划。想找出来做个对比,可是没有找到。应该是删除了吧。2017年发生了很多事情,做了很多决定。也错过了很多机遇。好的坏的都过去了

2017总结

  1. 换了一家公司,重新开始漂泊,来了杭州。
  2. 工作还算顺利,压力不大,但是个人进步较小。
  3. 她也来了杭州。工作还算OK。
  4. 见了双方父母,虽然她家里人对我不满意。
  5. 房子提前半年交付了。有点措手不及。
  6. 爷爷去世了。
  7. 自己身体情况还算稳定。
  8. 今年回家的次数比往年都多,继续坚持。

2018计划

  1. 工作继续推进 开发新功能 重构原有模块
  2. 学习.NET Core
  3. 学习Python 会写爬虫
  4. 考驾照
  5. 开始锻炼身体。不限方式,控制体重
  6. 控制欲望,处理一些债务。
  7. 开始读书,一个月一本。
  8. 开始面对不愿意面对的,不逃避。

IIS 8 HTTP重定向到HTTPS

今天在试着在IIS8.0上设置HTTPS,按照教程添加完成以后可以正常使用HTTPS服务,但是在设置HTTP重定向到HTTPS上的时候遇到了些问题,现在把问题解决过程记录一下。

  • 首先在IIS中安装了URL重写模块。这是32位版本64位版本的下载。安装完成以后重新开打IIS 就可以看到”URL Rewrite” 图

  • 在IIS中选择网站,然后单击功能窗格中的“URL重写”选项。URL重写页面打开以后单击右侧窗格中的“添加规则…”链接,选择空白规则点击确定,输入名称。

  • Match URL 部分 :
    • 设置 Requested URL 为 Matches the Pattern.
    • 设置 Using 为 Regular Expression
    • 设置 Pattern 为 (.*)

  • Conditions 部分. 点击 添加
    • 设置Condition Input{HTTPS}
    • 设置Check if Input String 为 Matches the Pattern
    • 设置Pattern 为 ^OFF$
    • 点击 确定

  • Actions 部分
    • 设置 Action Type Redirect
    • 设置 Redirect URL https://{HTTP_HOST}/{R:1}
    • 设置 Redirect Type Permanent(301)
    • 点击应用

现在所有的请求都会被301重定向到HTTPS

 

IIS 配置文件

VisualSVN 6.0 破解

VisualSVN6.0在VisualStudio2017中是以插件的形式安装的,所以要先找到VisualSVN的安装目录。

参考目录C:\Users\用户名\AppData\Local\Microsoft\VisualStudio\vs版本\Extensions\随机数
注意!!!并不是C:\Program Files (x86)\VisualSVN\bin这个目录
找到VisualSVN.Core.L.dll之后直接覆盖原有DLL。
备注:破解的时候请关闭VisualStudio2017,并且做好备份。每次破解以后过一段时间,不知为何VisualSVN.Core.L.dll会被还原,导致破解失败。重新替换一下文件就可以。

下载地址:VisualSVN-6.0-Crack.zip

备用地址:https://pan.baidu.com/s/1i5Qni5Z 密码: cpr2