【步骤】
• 下载
• 解压
• 检查java环境和ssh的免密码登陆
• 修改core-site.xml
• 修改hdfs-site.xml
• 修改masters文件和slaves文件
• 复制hadoop配置文件到其他主机上
• 配置hadoop环境变量
• 格式化namenode
• start-hdfs.sh启动
• 测试
准备4台服务器(Centos):node2(192.168.152.111)、node3(192.168.152.112)、node4(192.168.152.113)、node5(192.168.152.114),其中node2为NameNode(NN)节点,node3、node4、node5为DataNode(DN)节点,而SecondaryNameNode(SNN)节点可以放在除namenode节点以外的任意节点上,假设为node3。
1、下载
hadoop-2.5.1_x64.tar.gz
2、解压
# tar -zxvf hadoop-2.5.1_x64.tar.gz
3、检查java环境和ssh的免密码登陆
hadoop官方文档已经提供了怎么设置免密码登录,文档路径在:
./share/doc/hadoop/hadoop-project-dist/hadoop-common/SingleCluster.html
一、在node2验证本地localhost是否可以免密码登录
# ssh localhost
二、如果有输入密码的提示,则执行下面命令
生成公钥和密钥
# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
将生成好的文件追加到本地的认证文件中去
# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
将生成好的公钥分别复制到node3、node4、node5里去,下面以node3为例:
一、复制node2的公钥到node3的opt文件夹下
# scp ~/.ssh/id_dsa.pub root@node3:/opt/
二、切换到node3,将opt文件下的node2的公钥追加到node3的认证文件中去
# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
# cat /opt/id_dsa.pub >> ~/.ssh/authorized_keys
三、在node2里测试node3和node4是否免密码登录
# ssh node3
# ssh node4
四、检查java版本号,强烈建议是1.7版本.并进入hadoop安装目录下配置JAVA_HOME路径
# java -version
# vi etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/java/latest
4、修改core-site.xml
core-site文件是配置namenode的数据传输、主机、端口等
# vi etc/hadoop/core-site.xml
输入
<configuration>
<property>
<name>fs.defaultFSname>
<value>hdfs://node2:9000value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/opt/hadoop-2.5value>
property>
configuration>
9000是数据传输上传和下载文件的端口,采用rpc协议.
hadoop.tmp.dir是hadoop的临时目录,默认目录在 /tmp/hadoop-${user.name}下,因为tmp目录在linux重启后数据会被清空,造成hadoop数据会丢失(namenode的fsimage文件也在hadoop.tmp.dir目录下),所以重新配置下路径
5、修改hdfs-site.xml
# vi etc/hadoop/hdfs-site.xml
输入
<configuration>
<property>
<name>dfs.replicationname>
<value>1value>
property>
<property>
<name>dfs.namenode.secondary.http-addressname>
<value>node3:50090value>
property>
<property>
<name>dfs.namenode.secondary.https-addressname>
<value>node3:50091value>
property>
configuration>
dfs.replication是上传到hdfs上时指定的副本数(默认是3)
dfs.namenode.secondary.http-address是配置SecondaryNameNode的http访问
6、修改masters文件和slaves文件
slaves是配置datanode的主机名
# vi slaves
输入
node3
node4
node5
masters是配置SecondaryNameNode的主机名
# vi slaves
输入
node3
7、复制hadoop配置文件到其他主机上
上面已经在node2里配置了HDFS所有相关参数,node3、node4、node5 也要保证与node2一致,可以复制hadoop目录到node3、node4、node5里
# scp -r hadoop-2.5.1/ root@node3:/home/
# scp -r hadoop-2.5.1/ root@node4:/home/
# scp -r hadoop-2.5.1/ root@node5:/home/
8、配置hadoop环境变量
# vi ~/.bash_profile
输入
export HADOOP_HOME=/home/hadoop-2.5.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
复制
# scp ~/.bash_profile root@node3:/root/
# scp ~/.bash_profile root@node4:/root/
# scp ~/.bash_profile root@node5:/root/
9、格式化namenode
只能在指定的namenode上的主机进行格式化操作,我的是node2作为namenode
# bin/hdfs namenode -format
10、start-hdfs.sh启动
# sbin/start-dfs.sh
11、测试
在浏览器打开namenode监控页面,地址:http://node2:50070
在浏览器打开SecondaryNameNode监控页面,地址:http://node3:50090
打不开的试着关闭防火墙或者添加防火墙访问权限
# service iptables stop
# vi /etc/sysconfig/iptables