美文网首页我爱编程
Hadoop集群安装部署

Hadoop集群安装部署

作者: 顶儿响叮当 | 来源:发表于2017-06-13 19:46 被阅读139次

单机部署参考Hadoop安装——单机

集群部署

  • 在每台主机配置好java环境,将hadoop安装到每台主机的/usr/local/hadoop目录下。

  • 修改每台主机Hadoop目录下etc/hadoop/hadoop-env.sh中的JAVA_HOME

# set to the root of your Java installation
export JAVA_HOME=/usr/local/jdk
  • 修改每台主机的主机名,并修改DNS
    #分别对应每台主机修改主机名,执行如下命令
     $  hostname master     #在10.0.30.70主机上执行
     $ hostname slave1      #10.0.30.64
     $ hostname slave2      #10.0.30.65
    
     #将三个主机上的/etc/hosts 文件修改成如下内容
     10.0.30.70 master
     10.0.30.64 slave1
     10.0.30.65 slave2
    
  • 设置各主机之间免密登录,参考Linux 下 的ssh免密登录
  • 在各主机下目录下 /usr/local/hadoop/,创建hdfs的存储目录tmp/dfs/datatmp/dfs/name,其中data目录用于存储hdfs的datanode数据,name目录用于存储hdfs的namnode数据
  • 配置文件
    NameodeResourceManger的文件配置,即在master的/usr/local/hadoop/etc/hadoop/目录下
    core-site.xml
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>

hdfs-site.xml,其中配置了namenode的存储位置,如果只作为namenode,data.dir不起作用,可不配置。

    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>

    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    
    <property>
       <name>dfs.datanode.data.dir</name>
       <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>

mapred-site.xml,配置hadoop的mapreduce框架

    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

yarn-site.xml,配置yarn,ResourceManger

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
    <property>
        <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>master:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>master:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>master:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>master:8088</value>
    </property>

slaves,从节点配置,即配置datanode

slave1
slave2

上述为datanode的文件配置,配置slave1和slave2的文几乎相同,将 core-site.xml, hdfs-site.xml, mapred-site.xml, yarn-site.xml复制到slave1和slave2的配置文件中。

  • 在master下执行hdfs格式化 hadoop namenode -format

  • 启动hdfs ./sbin/start-dfs.sh , 之后通过jps命令可以查看hadoop的进程

  • 启动yarn ./sbin/start-yarn.sh

  • 启动job History Server ./sbin/mr-jobhistory-daemon.sh start historyserver

  • master和slave上的进程:



  • 在master下运行示例:
hadoop fs -mkdir /input               # 在hdfs上创建目录
hadoop fs -ls /                       # 显示hdfs上目录/下文件
hadoop fs -put input/*.xml /input     #将 input/*.xml 上传到 hdfs上的/input文件夹下
hadoop fs -ls /input                  #显示hdfs上目录下/input下文件
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.0.jar grep /input /output 'd[a-z.]+'   #运行example  输入为hdfs上的/input  输出在hdfs上的/output
hadoop fs -cat /output/*              #输出结果
hadoop fs -get /output ./output       #将hdfs上的 结果/output下载到 ./output
cat output/*                          #输出结果11

安装过程中遇到的问题

  • datanode 进程未启动,hdfs初始化的原因,查看datanode和namenode的存储路径下的/current/VERSION中的clusterID,将datanode的设成和namenode的一致

  • 期间有一个问题,进程都能启动,单机情况下可以正常运行示例,集群之后运行时卡在 map(0%) reduce(0%),然后报错... connection refused,from localhost.domian to ...
    找了好久原因,最后发现是主机名没有设置,默认的主机名localhost.localdomain对应的ip是127.0.0.1,hadoop某个地方根据主机名获取域名ip,即127.0.0.1,单机情况下可以访问,但集群下127.0.0.1无法对外提供访问,所以报错connection refused,设置主机名,并在etc/hosts中将主机名对应本机的ip,注释掉localhost.localdomain即可

  • 报错hdfs.DFSClient:Exception in createBlockOutputStream [Java].net.NoRouteToHostException:No route to host,原因是未关闭防火墙,执行:service iptables stop

  • 各主机之间时间同步,若时间不同步运行示例时也会出现异常

service ntpd stop  #若报错the NTP socket is in use, exiting,则执行
ntpdate ntp.api.bz

相关文章

网友评论

    本文标题:Hadoop集群安装部署

    本文链接:https://www.haomeiwen.com/subject/hcmdqxtx.html