Hadoop集群搭建

布局设计

2020 hadoop 环境搭建 hadoop环境搭建与安装_hdfs

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安装成功。

2020 hadoop 环境搭建 hadoop环境搭建与安装_xml_02

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文件。

2020 hadoop 环境搭建 hadoop环境搭建与安装_hdfs_03

 

1)配置hadoop-env.sh

 

命令:

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

2020 hadoop 环境搭建 hadoop环境搭建与安装_hadoop_04

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>

2020 hadoop 环境搭建 hadoop环境搭建与安装_xml_05

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

2020 hadoop 环境搭建 hadoop环境搭建与安装_hdfs_06

    

2020 hadoop 环境搭建 hadoop环境搭建与安装_xml_07

    

2020 hadoop 环境搭建 hadoop环境搭建与安装_hadoop_08

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

2020 hadoop 环境搭建 hadoop环境搭建与安装_2020 hadoop 环境搭建_09

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

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

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

2020 hadoop 环境搭建 hadoop环境搭建与安装_2020 hadoop 环境搭建_10

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

2020 hadoop 环境搭建 hadoop环境搭建与安装_xml_11

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

2020 hadoop 环境搭建 hadoop环境搭建与安装_hadoop_12

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

2020 hadoop 环境搭建 hadoop环境搭建与安装_xml_13

执行状态可以在网页查看

2020 hadoop 环境搭建 hadoop环境搭建与安装_xml_14

 

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

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

解决:centOS 6.5关闭防火墙

关闭命令:  service iptables stop

永久关闭防火墙:chkconfig iptables off

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