概述:
本文主要记录Hadoop-0.20.2安装过程,包括安装过程中的关键问题的解决。这里将安装过程分为三步:
第一步,打通筋脉,也就是配置各个节点间的环境,如创建hadoop用户和用户组,配置节点间ssh无密码连接;
第二步,战略部署,部署Hadoop程序,配置环境变量,修改配置参数;
第三步,准备战斗,也就是启动Hadoop集群,检查集群是否正常运行。
第一步:打通筋脉
创建hadoop用户
后续hadoop启动、停止等操作都使用进行,如果是测试环境需要部署多个Hadoop版本,可以通过建立多个用户来隔离处理。
具体操作:
- groupadd MrStone //创建用户组
- useradd -s /bin/bash -g MrStone MrStone //创建用户
- passwd MrStone //为新创建的用户设置密码
- 在slave1和slave2上执行上面三步操作操作
配置master和slave间ssh无密码互联
master和slave间ssh无密码互联是Hadoop集群正常运行的前提,因为master和slave间的一部分内部操作都是通过ssh来进行的。本文以三台机器为例master1、slave1、slave2进行说明。master1是主节点,它主动发起ssh连接到slave1和slave2。
ssh无密码连接原理:slave1和slave2启动ssh服务作为服务端,master1作为客户端访问slave1和slave2的服务。为了保证连接的安全性,master1需要生成一个密钥对,也就是一个私钥,一个公钥。将公钥拷贝到slave1和slave2上,这样当master1向slave1发起ssh连接时,slave1会生成一个随机数,并使用公钥进行加密,然后将加密的随机数发送给master1,master1收到后使用私钥进行解密,然后将解密后的随机数发送给slave1,slave1确认解密数正确后允许master1进行连接。
具体操作:
- su MrStone //使用MrStone用户登陆
- ssh-keygen -t rsa -f ~/.ssh/id_rsa // 创建RSA秘钥对,在~/.ssh/目录下会生成秘钥id_rsa和公钥id_rsa.pub两个文件
- scp id_rsa.pub slave1_IP:/~/.ssh/ //这里要将slave1,替换为对应的ip,将公钥(id_rsa.pub)拷贝到slave1和slave2上
- 登陆到slave1和slave2进行操作,mkdir ~/.ssh //在创建.ssh文件夹
- chmod 700 ~/.ssh //在slave1和slave2上操作,修改权限,这一步非常重要,如果权限太大,ssh是不会工作的
- cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys //在slave1和slave2上操作,将公钥拷贝到~/.ssh/authorized_keys
- chmod 644 ~/.ssh/authorized_keys //在slave1和slave2上操作,修改权限,如果权限太大,ssh服务拒绝工作
- 测试 从master ssh到slave1 和slave2 检查是否需要密码验证,如果成功,则配置完成
第二步:战略部署
配置环境变量:
主要添加项有 $JAVA_HOME $HADOOP_HOME 和$HADOOP_CONF_DIR,具体如何添加我就不在此啰嗦了
部署程序包:
将hadoop程序包解压到$HADOOP_HOME目录下
修改配置参数:
在$HADOOP_CONF_DIR下修改对应的配置参数,主要要注意的几项:元数据存储地址、本地数据存储地址、日志存储地址
并且要保证这几个地址的所有者为MrStone,这样hadoop程序才能正常读写。
以上几项需要保持master节点和slave节点一致
具体参数配置及说明,见参考资料
第三步:准备战斗
启动hdfs
启动命令,start-dfs.sh
检查三步式,使用jps查看是否有NameNode进程;在浏览器浏览 http://master_ip:50070;或者使用"hadoop dfsadmin -report"命令查看hdfs运行状态;
如果有没有发现NameNode进程,则查看日志信息(日志文件在core-site.xml中有配置)
启动map-reduce
启动命令,start-mapred.sh
检查三步式,使用jps查看是否有JobTracker进程在运行;在浏览器查看http://master_ip:50030;
如果发现未启动,则跟踪JobTracker日志(日志文件地址在core-site.xml中有配置)
错误信息及解决办法
参考资料:
cloudera 帮助文档:
Hadoop安装部署:
报错 Incompatible namespaceIDs in /home/admin/joe.wangh/hadoop/data/dfs.data.dir: namenode namespaceID = 898136669
参考资料:
mapred-site.xml配置参数:
hdfs-site.xml配置参数:
core-site.xml配置参数: