Hadoop分布式模式环境搭建

来源:互联网 发布:巳知电阻怎样算功率 编辑:程序博客网 时间:2024/06/03 19:00

前一篇文章介绍了hadoop伪分布式模式的搭建,本篇文章介绍分布式模式的搭建。

分布式和伪分布式的区别,只是hadoop是真真正正跑在多个机器上,他们的配置其实是十分相似的。不过有以下几点需要注意:

  • hadoop的分布式模式只能运行在linux上,在windows上时不可以的,至少在hadoop2.5.1这个版本上不可以。至于原因,有很多,本人尝试过在多个windows上跑hadoop,都以失败告终(例如windows下根本就没有免密码登录这个概念)。
  • hadoop运行的各个机器,都必须要有一个主机名。也就是说各个机器上的hadoop之间进行通信时,使用的都是主机名,而非ip。因此某些ip爱好者(例如我自己),如果希望配置hadoop的各个节点时直接使用ip地址,都省省吧。
  • SSH免密码登录必不可少。

前提

由于是真正的分布式,所以需要多台机器。建议至少4台linux机器,一个是namenode,一个是resourcemanager,另外两台同时运行datanodenodemanager,以便模拟当一台机器宕机后,hadoop能否正常工作。

规划

四台机器的功能如下:

ip 主机名 运行的hadoop节点 说明 192.168.56.2 h2 namenode hdfs的namenode节点 192.168.56.3 h3 resourcemanager hdfs的resourcemanager节点 192.168.56.4 h4 datanode、nodemanager hdfs的namenode和nodemanager节点 192.168.56.5 h5 datanode、nodemanager hdfs的namenode和nodemanager节点

配置hadoop分布式模式需要如下几步

第一步,配置基础环境。

4台机器配置如下环境:

  • 解压JDK,配置JAVA_HOME和PATH环境变量
  • 解压HADOOP,并配置HADOOP_PREFIX和PATH环境变量。注意:PATH要把hadoop目录下的bin和sbin都加进去
  • 配置ssh免密码登录
  • 配置各个机器的主机名(centos在/etc/sysconfig/network修改,ubuntu在/etc/hostname中修改)。注意:这里的主机名要和hosts文件中的主机名一致。
  • 配置hosts文件。假设四台机器的ip分别为192.168.56.2,192.168.56.3,192.168.56.4,192.168.56.5。这里给它们分别起名字分别为h2,h3,h4,h5。
    那么host文件这么写:
192.168.56.2 h2192.168.56.3 h3192.168.56.4 h4192.168.56.5 h5

四台机器都是用同样的hosts文件。

第二步,修改hadoop配置文件。

hadoop所以配置文件都在${HADOOP_HOME}/etc/hadoop中

修改core-site.xml如下:

<configuration>    <property>        <name>fs.defaultFS</name>        <value>hdfs://h2:9000</value>    </property>    <property>            <name>hadoop.native.lib</name>          <value>true</value>           <description>Should native hadoop libraries, if present, be used.</description>    </property>    <!-- 允许任意地址访问 -->    <property>            <name>hadoop.proxyuser.root.hosts</name>            <value>*</value>     </property>    <!-- 允许任意地址访问 -->    <property>            <name>hadoop.proxyuser.root.groups</name>            <value>*</value>    </property></configuration>

修改hdfs-site.xml如下:

<configuration>    <property>        <name>dfs.replication</name>        <value>2</value>    </property>    <!-- 修改hdfs文件的保存位置 -->    <property>        <name>dfs.namenode.name.dir</name>        <value>/root/hadoop/dfs/name</value>    </property>    <!-- 修改hdfs文件的保存位置 -->    <property>        <name>dfs.datanode.data.dir</name>        <value>/root/hadoop/dfs/data</value>    </property>    <!-- 修改hdfs文件块大小为1MB -->    <property>        <name>dfs.blocksize</name>        <value>1048576</value>    </property></configuration>

修改mapred-site.xml:

<configuration>    <!-- 使用yarn作为mapreduce的实现 -->    <property>        <name>mapreduce.framework.name</name>        <value>yarn</value>    </property></configuration>

修改yarn-site.xml:

<configuration>    <!-- 指定resourcemanager的主机名(resourcemanager为yarn的核心) -->    <property>        <description>The hostname of the RM.</description>         <name>yarn.resourcemanager.hostname</name>         <value>h3</value>     </property>    <property>        <name>yarn.nodemanager.aux-services</name>        <value>mapreduce_shuffle</value>    </property>    <!-- 指定yarn临时文件保存位置 -->    <property>        <name>yarn.nodemanager.local-dirs</name>        <value>/root/hadoop/mapred/local</value>    </property></configuration>

启动hadoop

第一次使用需要格式化hdfs

在h2机器上,执行${HADOOP_HOME}/bin/hdfs.bat namenode -format来格式化hdfs

启动dfs

在h2机器上,执行${HADOOP_HOME}/sbin/start-dfs来启动hdfs
在浏览器中输入http://192.168.56.2:50070 可看到hdfs已启动
同时在进程列表中可看到nodemanagersecondarynamenode等进程,同时在h4和h5机器上可以看到datanode等进程。

启动yarn(mapreduce)

在h3机器上,执行${HADOOP_HOME}/sbin/start-yarn来启动yarn
在浏览器中输入http://192.168.56.3:8088 可看到yarn已启动
同时在进程列表中可看到resourcemanager进程,在h4和h5机器上课看到nodemanager等进程。

全文完。

0 0
原创粉丝点击