如果是全新安装集群的话,可以参考《Ubuntu 16.04上搭建CDH5.16.1集群》
下面是集群新增节点步骤:
1.已经存在一个集群,有两个节点
192.168.100.19 hadoop-master
192.168.100.20 hadoop-slave1
新增节点ip为192.168.100.21
2.新增节点所有的操作都在root下进行,所以首先需要设置ssh可以使用root登录(如果已经是root登录则跳过)
①设置root的登录密码
sudo passwd root
②切换到root用户
sudo su root
③设置登录账户可以使用root
vi /etc/ssh/sshd_config
#PermitRootLogin prohibit-password #屏蔽这一行
PermitRootLogin yes #增加这一行
④更新软件列表并检查是否联网状态
apt-get update
3.新增节点关闭防火墙
ufw disable
4.设置新增节点hostname和hosts
①设置hostname:
vi /etc/hostname
设置为hadoop-slave2
②修改hosts
vi /etc/hosts
127.0.0.1 localhost
#127.0.1.1 test1 #屏蔽这一行 #新增下面三行
192.168.100.19 hadoop-master
192.168.100.20 hadoop-slave1
192.168.100.21 hadoop-slave2
③使用ping命令,查看以上设置是否正确
ping hadoop-master
ping hadoop-slave1
ping hadoop-slave2
④重启后用root登录
5.让三台服务器之间互相可以使用root无需输入密码进行ssh登录。
①新增节点生成公钥(不要设置密码)
ssh-keygen -t rsa
截图如下:
②将本机的公钥复制到另外两台服务器上。(过程需要输入目标服务器的root登录密码)
ssh-copy-id -i /root/.ssh/id_rsa.pub hadoop-master #在新增节点上执行
ssh-copy-id -i /root/.ssh/id_rsa.pub hadoop-slave1 #在新增节点上执行
ssh-copy-id -i /root/.ssh/id_rsa.pub hadoop-slave2 #在master和slave1上执行
③测试是否成功
ssh hadoop-master #无密码远程登录hadoop-master,使用exit退出
ssh hadoop-slave1 #无密码远程登录hadoop-slave1,使用exit退出
ssh hadoop-slave2 #无密码远程登录hadoop-slave2,使用exit退出
④如果出现下面的报错
ssh:connect to host hadoop-slave1 port 22: Connection refused
ssh: connect to host hadoop-slave1 port 22: Connection timed out
检查root的密码是否正确,可以使用ssh localhost检查一下是否可以登录到本机,如果不行则证明root密码有问题,转到上面第2个步骤重新设置root密码。
检查/etc/hosts文件中ip和hostname是否正确
检查防火墙是否关闭
6.安装JAVA运行环境
①正常显示版本号则跳过下面步骤
java -version
②如果显示如下,则表示还没有安装JAVA
③具体JDK的安装可以参考
7.安装JAVA的MySQL软件包
apt-get install libmysql-java
8.新增节点中下载CDH相关文件(由于版本的更新,版本号会不断递增),并进行设置
①在浏览器中输入 http://archive.cloudera.com/cm5/cm/5/ 查看到ubuntu对应最新版本
②在浏览器中输入 http://archive.cloudera.com/cdh5/parcels/latest 查看到ubuntu对应最新版本
③将上面的四个文件都下载下来
wget -c http://archive.cloudera.com/cm5/cm/5/cloudera-manager-xenial-cm5.16.1_amd64.tar.gz
wget -c http://archive.cloudera.com/cdh5/parcels/latest/CDH-5.16.1-1.cdh5.16.1.p0.3-xenial.parcel
wget -c http://archive.cloudera.com/cdh5/parcels/latest/CDH-5.16.1-1.cdh5.16.1.p0.3-xenial.parcel.sha1
wget -c http://archive.cloudera.com/cdh5/parcels/latest/manifest.json
④将CDH-5.16.1-1.cdh5.16.1.p0.3-xenial.parcel.sha1文件重命名为CDH-5.16.1-1.cdh5.16.1.p0.3-xenial.parcel.sha
mv CDH-5.16.1-1.cdh5.16.1.p0.3-xenial.parcel.sha1 CDH-5.16.1-1.cdh5.16.1.p0.3-xenial.parcel.sha
⑤在/opt中建立对应的文件夹结构(cm-5.16.1为当前版本号)
| --/opt
|--/cloudera
|--/parcels
|--/parcel-repo
|--/cm-5.16.1
cd /opt
mkdir cm-5.16.1
mkdir cloudera
cd cloudera
mkdir parcels
mkdir parcel-repo
⑥将CDH-5.16.1-1.cdh5.16.1.p0.3-xenial.parcel、CDH-5.16.1-1.cdh5.16.1.p0.3-xenial.parcel.sha和manifest.json三个文件拷贝到/opt/cloudera/parcel-repo中
cp CDH-5.16.1-1.cdh5.16.1.p0.3-xenial.parcel CDH-5.16.1-1.cdh5.16.1.p0.3-xenial.parcel.sha manifest.json /opt/cloudera/parcel-repo
⑦解压cloudera-manager-xenial-cm5.16.1_amd64.tar.gz到/opt中
tar -zxf cloudera-manager-xenial-cm5.16.1_amd64.tar.gz -C /opt
⑧修改配置文件
vi /opt/cm-5.16.1/etc/cloudera-scm-agent/config.ini
# Hostname of the CM server.
server_host=hadoop-master #修改为主机名
9.新增用户
useradd --system --home=/opt/cm-5.16./run/cloudera-scm-server --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
10.安装python
apt-get install python2.
11.设置vm.swappiness=10
vi /etc/sysctl.conf
vm.swappiness=10 #在文件最后增加一行
cat /proc/sys/vm/swappiness #查看当前值,设置后需要重启才生效
12.安装必要的库
apt-cache search libmysql
apt-get install libmysql++-dev
apt-get install python-libxslt1
13.java环境快捷方式
mkdir /usr/java
ln -s /usr/local/java /usr/java/default
14.reboot重启
15.启动进程(报错信息的处理可查看:《Ubuntu 16.04上搭建CDH5.16.1集群》)
cd /opt/cm-5.16.1/etc/init.d
./cloudera-scm-server start
./cloudera-scm-agent start
16.耐心稍等一会,进入master的页面http://192.168.100.19:7180/cmf/login进行登录
17.找到所有主机列表(如果没看到新的节点,要么是等的时间不够久,要么是上面的步骤出错了)(可以看到192.168.100.21下的Roles为空)
18.点击Add New Host to Cluster,出现向导
19.这里显示还没有加入到集群的新节点
20.耐心等待安装
21.返回安装信息
22.这里可以为新增节点角色,这里我们不设置,在后面再新增DataNode的角色
23.完成Finished
24.下面步骤为将新增节点加入到DataNode角色中。
25.点击进入HDFS的DataNode中
26.点击Add Role Instances
27.在所有主机上使用DataNode角色
28.全部步骤完成。
以上。