文章说明

  • 需要注意的地方会用黄色高光标注
  • 文章中用到的一些知识,我会选择性提供文章链接,可考率是否阅读。

(一)初步了解搭建步骤

准备工作1.虚拟机准备
准备好三台安装好jdk和hadoop的虚拟机
方法:可以克隆1台干净的虚拟机,做完所有jdk、hadoop配置后,将处理好的虚拟机克隆为集群,别忘了修改集群机器的IP和主机名
如何更改用户名和主机名入口 我这里用的是3台机器,分别为Cloud10、Cloud11、Cloud12
如有需要请参考文章
如何快速克隆虚拟机入口如何安装jdk和hadoop入口2.全分布的必要准备ssh免密登录
要先关闭防火墙
关闭防火墙命令

sudo service iptables stop

3.编辑8个配置文件
4.启动并测试集群

(二)详细步骤(从3.配置文件开始,)

1.集群部署规划

了解部署规划后,可以对照相应配置文件的内容,检查集群启动后节点分配是否正确

hadoop双机房容灾架构 hadoop跨机房部署_配置文件


2.编辑配置文件(我在Cloud10机器下配置的这8个文件)

注意:全分布需要编辑8个文件,路径是~/software/hadoop/etc/hadoop,然后将一台机器配置好的这些文件,用scp命令远程拷贝到其他机器上。

以下是8个配置文件的名称及配置的内容

hadoop-env.sh //用于修改JAVA_HOME后的目录,改成实际本机jdk所在目录位置
core-site.xml //用于指定namenode节点的位置,Hadoop运行时产生文件所存储的mulu
hdfs-site.xml //指定hdfs的副本数和secondarynamenode的位置
slaves  //用于指定组成机器的主机名
yarn-env.sh //用于修改JAVA_HOME后的目录,改成实际本机jdk所在目录位置
yarn-site.xml //用于指定reducer获取数据的方式、指定resourcemanager的位置
mapred-env.sh //用于修改JAVA_HOME后的目录,改成实际本机jdk所在目录位置
mapred-site.xml //指定mr在yarn上运行

hadoop双机房容灾架构 hadoop跨机房部署_xml_02


(1)core-site.xml

注:/data/tmp 目录如不存在,则先mkdir手动创建。(为了存放haddop运行生成文件的存储目录)

<configuration>
<!-- 指定HDFS中NameNode的地址 -->
 <property>
     <name>fs.defaultFS</name>
     <value>hdfs://Cloud11:9000</value>
 </property>
 <!-- 指定hadoop运行时产生文件的存储目录 -->
 <property>
     <name>hadoop.tmp.dir</name>
      <value>/home/hduser/software/hadoop/data/tmp</value>
     </property>
</configuration>

hadoop双机房容灾架构 hadoop跨机房部署_Hadoop的完全全分布部署_03

  • Hdfs部分

(2)hadoop-env.sh

hadoop双机房容灾架构 hadoop跨机房部署_Hadoop的完全全分布部署_04


(3)hdfs-site.xml

HDFS副本的数量与机器数一样

<configuration>	
	<property>
		<name>dfs.replication</name>
		<value>3</value>
	</property>
	<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>Cloud11:50090</value>
    </property>
</configuration>

hadoop双机房容灾架构 hadoop跨机房部署_xml_05


(4)slaves

hadoop双机房容灾架构 hadoop跨机房部署_配置文件_06

  • yarn部分

(5) yarn-env.sh

hadoop双机房容灾架构 hadoop跨机房部署_Hadoop的完全全分布部署_07


(6)yarn-site.xml

<configuration>
<!-- Site specific YARN configuration properties -->
<!-- reducer获取数据的方式 -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

<!-- 指定YARN的ResourceManager的地址 -->
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>Cloud10</value>
	</property>
	</configuration>

hadoop双机房容灾架构 hadoop跨机房部署_xml_08

  • mapreduce部分

(7)mapred-env.sh

hadoop双机房容灾架构 hadoop跨机房部署_hadoop_09


(8)mapred-site.xml

先将模板mapred-site.xml.template 复制为mapred-site.xml

cp mapred-site.xml.template mapred-site.xml

然后编辑内容如下

<configuration>
<!-- 指定mr运行在yarn上 -->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
	</configuration>

hadoop双机房容灾架构 hadoop跨机房部署_配置文件_10


然后把上面的配置文件远程拷贝到集群其他机器

在这个路径下输入scp命令

hadoop双机房容灾架构 hadoop跨机房部署_xml_11

scp -r hadoop hduser@Cloud11:~/software/hadoop/etc
scp -r hadoop hduser@Cloud12:~/software/hadoop/etc

温馨提示
至此,操作步骤已完成,请确保:
1.jdk和Hadoop安装、配置工作做好了
2.三台机器互相免密登录
3.三台机器的配置文件更改完成

3.启动并测试集群
如果集群是第一次启动,需要格式化namenode(不要经常格式化,不然你的集群的ID 就会发生改变,修改很麻烦)

bin/hdfs namenode -format

hadoop双机房容灾架构 hadoop跨机房部署_配置文件_12


(1)启动HDFSstart-dfs.sh

hadoop双机房容灾架构 hadoop跨机房部署_配置文件_13


(2)启动yarn

注意:Namenode和ResourceManger如果不是同一台机器,不能在NameNode上启动 yarn,应该在ResouceManager所在的机器上启动yarn

start-yarn.sh

hadoop双机房容灾架构 hadoop跨机房部署_xml_14


(3)分别 jps 命令测试三台机器是否都启动。

hadoop双机房容灾架构 hadoop跨机房部署_hadoop_15


hadoop双机房容灾架构 hadoop跨机房部署_配置文件_16


hadoop双机房容灾架构 hadoop跨机房部署_hadoop双机房容灾架构_17

  • 查看hadf的webui界面

如果你在搭建过程中遇到问题,可以参考以下文章找解决办法

搭建集群常见的问题及解决办法