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安装成功。
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文件。
1)配置hadoop-env.sh
命令:
cd $HADOOP_HOME
vim hadoop-env.sh 添加:export JAVA_HOME=/root/app/jdk1.7.0_76
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>
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
2)利用web ui 来查看,pc端网页访问http://192.168.1.111:50070,进入以下页面(其中遇到打不开的问题,见附)
3)上传和下载文件(测试hdfs).
命令:hdfs dfs -ls / 查看根目录有没有东西,现在没有
将README.txt上传到根目录:hdfs dfs -put ./README.txt /
读文件:hdfs dfs -cat /README.txt
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
查看结果:hdfs dfs -cat /out/00/part-r-00000
执行状态可以在网页查看
附:出现的问题及解决方案
1.问题:不能访问http://192.168.1.111:50070/网页
解决:centOS 6.5关闭防火墙
关闭命令: service iptables stop
永久关闭防火墙:chkconfig iptables off
两个命令同时运行,运行完成后查看防火墙关闭状态:service iptables status