Hadoop分布式模式环境搭建

前一篇文章介绍了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.2h2namenodehdfs的namenode节点
192.168.56.3h3resourcemanagerhdfs的resourcemanager节点
192.168.56.4h4datanode、nodemanagerhdfs的namenode和nodemanager节点
192.168.56.5h5datanode、nodemanagerhdfs的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 h2
192.168.56.3 h3
192.168.56.4 h4
192.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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值