之前在服务器上搭建Hadoop的记录,因为对这方面了解不深,有些问题还待解决……
安装过程
环境
- 三台浪潮服务器
- CentOs 6.8
- Hadoop 2.8.5
- JDK1.8.0_181
配置hadoop账户及ip映射
每个主机建立新账户
1 | useradd hadoop |
设置账户密码
为 hadoop 账户设置管理员权限
1 | sudo visudo |
在
1 | ## Allow root to run any commands anywhere |
后添加
1 | hadoop ALL=(ALL) ALL |
中间为tab
修改主机名
1 | sudo vim /etc/sysconfig/network |
将主机名分别修改为 Master、Slave1、Slave2
每一台主机在下面的文件中添加所用节点的ip映射
1 | sudo vim /etc/hosts |
检查各个节点之间是否能连通
Master:
1 | ping Slave1 -c 3 |
Slave1:
1 | ping Slave2 -c 3 |
设置SSH无密码登陆节点
生成 Master 节点的公钥,在 Master 节点的终端执行
1 | cd ~/.ssh |
所有选项直接回车即可
让 Master 节点能够无密码登陆本机,在 Master 节点上执行
1 | cat ./id_rsa.pub>>./authorized_keys |
在 Master 节点上将公钥传输到其他节点
1 | scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/ |
在 Slave1 和 Slave2 中将 Master 的公钥添加到~/.ssh/authorized_keys
文件的末尾
在 Slave1 和 Slave2 上执行相同操作,每个节点的authorized_keys
文件中都保存所有节点的公钥
在 Master 上使用 ssh 命令分别登陆其他两个节点,首次可能需要输入密码,之后不再需要
若不能成功则修改权限
1 | sudo chmod 600 ~/.ssh/authorized_keys |
.ssh
的父目录(即/home/hadoop
)的权限应为755
安装JDK
1 | java -version |
查看 java 版本,未安装则下载 JDK 安装(后面重新安装了 JDK1.8.0_181)
安装后配置 JAVA_HOME 环境变量
1 | vim ~/.bashrc |
在文件最后一行添加指向 JDK 的安装位置,并保存
1 | export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.99.x86_64/jre |
1 | echo $JAVA_HOME |
检查设置是否正确
配置Hadoop
下载 hadoop,解压到/usr/local
,修改文件夹名为 hadoop,修改文件权限,查看是否可用
1 | sudo tar -zxf ~/hadoop-2.8.5.tar.gz -C /usr/local |
如果出现Error:JAVA_HOME is not set and could not be found
打开hadoop/etc/hadoop
目录下 hadoop-env.sh 脚本,修改其中的 JAVA_HOME 即可
修改hadoop/etc/hadoop
下的 slaves 文件,写入作为 DataNode 的主机名
1 | Slave1 |
修改文件 core-site.xml
1 | <configuration> |
修改文件 hdfs-site.xml
1 | <configuration> |
修改文件 mapred-site.xml(或文件 mapred-site.xml.template,修改后另存为 .xml 文件)
1 | <configuration> |
修改文件 yarn-site.xml
1 | <configuration> |
配置好后将 Master 中/usr/local/hadoop
复制到其它两个节点上
1 | cd /usr/local |
在两个节点上分别执行
1 | sudo tar -zxf /home/hadoop/hadoop.master.tar.gz -C /usr/local |
关闭系统的防火墙
1 | sudo service iptables stop #关闭防火墙服务 |
启动hadoop
首次启动时需要在 Master 节点上执行hdfs namenode -format
进行 NameNode 的格式化
1 | cd /usr/local/hadoop/sbin |
通过命令 jps 可以查看各个节点所启动的进程
正确的话在 Master 节点上可以看到 NameNode、ResourceManager、SecondaryNameNode、JobHistoryServer 进程
在 Slave1 和 Slave2 上可以看到 DataNode 和 NodeManager 进程
在 Master 节点上通过命令hdfs dfsadmin -report
查看 DataNode 是否正常启动。如果 Live DataNodes 不为 0 则说明启动成功
通过http://172.172.172.29:50090
也可以查看 hadoop 的工作状态
遇到的问题
hadoop和hdfs找不到命令
在/etc/profile
文件中添加环境变量
1 | export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.99.x86_64/jre |
jps找不到命令
重新安装jdk1.8.0_181
,修改相应的环境变量
1 | source /etc/profile |
使设置生效
DataNode没有启动
关闭所有服务,删除每个节点/usr/local/hadoop
目录下的 tmp 和 logs 目录,新建 tmp 和 logs,重新初始化节点再启动服务
1 | cd /usr/local/hadoop |