美文网首页我爱编程
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