4.克隆master到slave1和slave2,并配置静态IP
克隆master到slave1和slave2
克隆后需要修改slave1和slave2的静态ip,配置方案为
节点slave1:
配置静态IP
cd /etc/netplan ls #返回,这个文件不用修改 01-network-manager-all.yaml # 创建02-config.yaml文件,添加静态ip sudo vi 02-config.yaml #
进入02-config.yaml的编辑界面,yaml格式有严格要求,slave1节点设置为131
network: version: 2 renderer: networkd ethernets: ens33: addresses: - 192.168.33.131/24 gateway4: 192.168.33.2 nameservers: addresses: [8.8.8.8, 1.1.1.1]
执行
sudo netplan apply • 1
来使得配置生效
节点slave2:
配置静态IP
cd /etc/netplan ls #返回,这个文件不用修改 01-network-manager-all.yaml # 创建02-config.yaml文件,添加静态ip sudo vi 02-config.yaml #
进入02-config.yaml的编辑界面,yaml格式有严格要求,slave2节点设置为132
network: version: 2 renderer: networkd ethernets: ens33: addresses: - 192.168.33.132/24 gateway4: 192.168.33.2 nameservers: addresses: [8.8.8.8, 1.1.1.1]
执行
sudo netplan apply
来使得配置生效
5.克隆后配置分布式免密
将master,slave1,slave2节点的公钥都发给给master节点,注意执行的节点
# 将各个节点的公钥发给hadoop@master节点 # master节点 ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@master # slave1节点 ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@master # slave2节点 ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@master
将合并在hadoop@master节点的公钥分发给slave1和slave2节点
# master节点执行,将公钥分发为slave1和slave2节点 scp -r ~/.ssh/authorized_keys hadoop@slave1:~/.ssh/authorized_keys scp -r ~/.ssh/authorized_keys hadoop@slave2:~/.ssh/authorized_keys
在master,slave1,slave2节点分别重启ssh服务
service sshd restart
3.启动测试
在master节点上执行格式化命令
hadoop namenode -format
会在master,slave1,slave2节点上的路径下看到格式化后的
dfs目录
在master执行启动hdfs命令
start-dfs.sh
然后在各个节点上依次执行
jps • 1
可以查看到启动的节点
其中master节点有
namenode datanode secondarynamenode jps
其中slave1节点有
datanode jps • 1 • 2
其中slave2节点有
datanode jps
打开浏览器
http://192.168.33.130:9870 • 1
即可查看到如下信息,到此,安装完毕
②使用start-dfs.sh
4.报错以及解决方案
问题1:/usr/bin/env: “bash”: 没有那个文件或目录
需要注意的是,执行前,查看自己的环境变量是否设置正确
Starting secondary namenodes [master] master: /usr/bin/env: "bash": 没有那个文件或目录 hadoop@master:~/opt/app/hadoop$ ls -l `which sh` lrwxrwxrwx 1 root root 4 11月 4 11:05 /bin/sh -> dash hadoop@master:~/opt/app/hadoop$ su root 密码: su:认证失败 hadoop@master:~/opt/app/hadoop$ hadoop@master:~/opt/app/hadoop$ sudo dpkg-reconfigure dash 正在删除 dash 导致 /bin/sh 转移到 /bin/sh.distrib 正在添加 bash 导致 /bin/sh 转移到 /bin/sh.distrib 正在删除 dash 导致 /usr/share/man/man1/sh.1.gz 转移到 /usr/share/man/man1/sh.distrib.1.gz 正在添加 bash 导致 /usr/share/man/man1/sh.1.gz 转移到 /usr/share/man/man1/sh.distrib.1.gz hadoop@master:~/opt/app/hadoop$ ls -l `which sh` lrwxrwxrwx 1 root root 4 11月 4 15:43 /bin/sh -> bash
同时查看自己的环境变量是否设置正确。
问题2:Cannot set priority of namenode process 15335
本解决方案参考网络,链接有些不记得了,以后找到再给补上。
需要注意的是,执行前,查看自己的环境变量是否设置正确
hadoop@master:~/opt/app/hadoop$ start-dfs.sh Starting namenodes on [master] master: ERROR: Cannot set priority of namenode process 15335 Starting datanodes slaves1: ssh: Could not resolve hostname slaves1: Name or service not known slaves2: ssh: Could not resolve hostname slaves2: Name or service not known Starting secondary namenodes [master] master: ERROR: Cannot set priority of secondarynamenode process 15735
解决方案
在$HADOOP_HOME/etc/hadoop/hadoop-env.sh最后一行加上HADOOP_SHELL_EXECNAME=hadoop,否则该环境变量默认值为hdfs。同时其他涉及USER的变量也改成hadoop,例如:
export HDFS_DATANODE_USER=hadoop export HADOOP_SECURE_DN_USER=hadoop export HDFS_NAMENODE_USER=hadoop export HDFS_SECONDARYNAMENODE_USER=hadoop export YARN_RESOURCEMANAGER_USER=hadoop export YARN_NODEMANAGER_USER=hadoop
另外,又发现一个地方会导致此问题,vi $HADOOP_HOME/bin/hdfs会发现脚本前几行有个地方如下:
HADOOP_SHELL_EXECNAME="hadoop"
如果您在安装过程中有遇到什么问题,可以留言,有时间会及时回复。