Hadoop完全分布式环境搭建(二)—— Hadoop安装及配置

Hadoop集群搭建

布局设计

Hadoop完全分布式环境搭建(二)—— Hadoop安装及配置

1.下载Hadoop

1)同样方式解压到app文件夹下 tar -zxvf hadoop-2.7.5.tar.gz -C app/

2)创建文件目录为了便于管理,给Master的hdfs的NameNode、DataNode及临时文件,在用户目录下创建目录:

/root/app/hadoopdata/hdfs/name

/root/app/hadoopdata/hdfs/data
/root/app/hadoopdata/hdfs/tmp
然后将这些目录通过scp命令拷贝到Slave1和Slave2的相同目录下。

2.安装

命令:vi /etc/profile 在最后添加:
export HADOOP_HOME=/root/app/hadoop-2.7.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
退出编辑,执行命令:source /etc/profile
测试:which hadoop 和hadoop version出现以下信息说明Hadoop安装成功。

Hadoop完全分布式环境搭建(二)—— Hadoop安装及配置

3.配置Hadoop相关文件

进入hadoop-2.7.1的配置目录:
cd $HADOOP_HOME
cd etc/hadoop
依次修改core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml以及slaves文件。
Hadoop完全分布式环境搭建(二)—— Hadoop安装及配置

1)配置hadoop-env.sh

命令:cd $HADOOP_HOME

vim hadoop-env.sh 添加:export JAVA_HOME=/root/app/jdk1.7.0_76

Hadoop完全分布式环境搭建(二)—— Hadoop安装及配置

2)配置core-site.xml文件

修改Hadoop核心配置文件core-site.xml,这里配置的是HDFS master(即namenode)的地址和端口号。

命令:vim core-site.xml

<configuration>
<!--配置hdfs文件系统的命名空间-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
//namenode是哪一台主机,就配置哪一台的主机名,我的是master
    </property>
<!-- 配置操作hdfs的存冲大小 -->
    <property>
        <name>io.file.buffer.size</name>
       <value>4096</value>
    </property>
<!-- 配置临时数据存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/root/app/hadoop-2.7.5/data/hdfs/tmp</value>
//临时目录,就是之前创建的目录
    </property>

</configuration>

Hadoop完全分布式环境搭建(二)—— Hadoop安装及配置

3)配置hdfs-site.xml文件

命令:vim hdfs-site.xml 添加:

<configuration>
<!--配置副本数-->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
<!--hdfs的元数据存储位置-->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/root/app/hadoop-2.7.5/data/hdfs/name</value>
    </property>
<!--hdfs的数据存储位置-->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/root/app/hadoop-2.7.5/data/hdfs/data</value>
    </property>
<!--hdfs的namenode的web ui 地址-->
    <property>
        <name>dfs.http.address</name>
        <value>master:50070</value>
    </property>
<!--hdfs的snn的web ui 地址-->
    <property>
        <name>dfs.secondary.http.address</name>
        <value>master:50090</value>
    </property>
<!--是否开启web操作hdfs-->
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
<!--是否启用hdfs权限(acl)-->
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
</configuration>


4) 配置mapred-site.xml
由于本身没有./etc/hadoop/mapred-site.xml文件,先执行:mv -f ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml
再执行:vi ./etc/hadoop/mapred-site.xml,添加以下信息

<configuration>
<!--指定maoreduce运行框架-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
<!--历史服务的通信地址-->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>master:10020</value>
    </property>
<!--历史服务的web ui地址-->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>master:19888</value>
    </property>
</configuration>

5) 配置yarn-site.xml

命令:vi ./etc/hadoop/yarn-site.xml

添加

<configuration>
<!--指定resourcemanager所启动的服务器主机名-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
<!--指定mapreduce的shuffle-->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
<!--指定resourcemanager的内部通讯地址-->
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>master:8032</value>
    </property>
<!--指定scheduler的内部通讯地址-->
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master:8030</value>
    </property>
<!--指定resource-tracker的内部通讯地址-->
 <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>master:8031</value>
    </property>
<!--指定resourcemanager.admin的内部通讯地址-->
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>master:8033</value>
    </property>
<!--指定resourcemanager.webapp的ui监控地址-->
<property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>master:8088</value>
    </property>
    </configuration>

6) 置slaves
命令:vi ./etc/hadoop/slaves 

添加:
master
slave1
slave2

4.远程分发到其他服务器上

将slave1和slave2的Hadoop文件删除掉(路径为/root/app/hadoop-2.7.5/bin)

scp -r ../hadoop-2.7.5/ slave1:/root/app/

scp -r ../hadoop-2.7.5/ slave2:/root/app/

5.启动

之前需要格式化,只需一次就好,在namenode服务器上格式化:hadoop namenode -format

命令:start-all.sh,启动所有服务

6.测试

1)查看进程是否按照规划启动起来

查看Java进程:master             slave1                                    slave2

Hadoop完全分布式环境搭建(二)—— Hadoop安装及配置    Hadoop完全分布式环境搭建(二)—— Hadoop安装及配置    Hadoop完全分布式环境搭建(二)—— Hadoop安装及配置

2)利用web ui 来查看,pc端网页访问http://192.168.1.111:50070,进入以下页面(其中遇到打不开的问题,见附)

Hadoop完全分布式环境搭建(二)—— Hadoop安装及配置

3)上传和下载文件(测试hdfs).

命令:hdfs dfs -ls /   查看根目录有没有东西,现在没有

将README.txt上传到根目录:hdfs dfs -put ./README.txt /

Hadoop完全分布式环境搭建(二)—— Hadoop安装及配置

读文件:hdfs dfs -cat /README.txt

Hadoop完全分布式环境搭建(二)—— Hadoop安装及配置

4)跑一个mapreduce的作业(测试yarn)

访问http://192.168.1.111:8088/

执行命令,执行范例中的mapreduce作业,统计README.txt中单词的数量:yarn jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar wordcount /README.txt /out/00

查看输出文件:hdfs dfs -ls /out/00

Hadoop完全分布式环境搭建(二)—— Hadoop安装及配置

查看结果:hdfs dfs -cat /out/00/part-r-00000

Hadoop完全分布式环境搭建(二)—— Hadoop安装及配置

执行状态可以在网页查看

Hadoop完全分布式环境搭建(二)—— Hadoop安装及配置


附:出现的问题及解决方案

1.问题:不能访问http://192.168.1.111:50070/网页

解决:centOS 6.5关闭防火墙

关闭命令:  service iptables stop

永久关闭防火墙:chkconfig iptables off

两个命令同时运行,运行完成后查看防火墙关闭状态:service iptables status