HDFS完全分布式安装

【步骤】

• 下载
• 解压
• 检查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

你可能感兴趣的:(Hadoop)