美文网首页我爱编程
hadoop开发环境&&集群搭建

hadoop开发环境&&集群搭建

作者: TTTing听 | 来源:发表于2018-01-14 11:46 被阅读0次

    hadoop搭建流程

    下载hadoop

    由于之后需要搭建hbase,查看hbase兼容hadoop版本,所以选择Hadoop-2.7.5

    image.png
    下载地址为http://hadoop.apache.org/releases.html

    搭建Pseudo-Distributed

    本地开发使用伪分布式集群

    修改配置

    etc/hadoop/core-site.xml

    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://localhost:9000</value>
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/Users/titengjiang/Documents/DeveloperTool/hadoop/local/tmp</value>
        </property>
    </configuration>
    

    etc/hadoop/hdfs-site.xml,配置副本,以及namenode,datanode数据存放路径

    <configuration>
      <!-- 设置namenode存放的路径 -->
      <property>
        <name>dfs.namenode.name.dir</name>
        <value>/Users/titengjiang/Documents/DeveloperTool/hadoop/local/name</value>
      </property>
      <property>
        <name>dfs.datanode.data.dir</name>
        <value>/Users/titengjiang/Documents/DeveloperTool/hadoop/local/hadoop/hdfs</value>
      </property>
      <property>
        <name>dfs.replication</name>
        <value>1</value>
      </property>
    </configuration>
    

    配置ssh免密码

    ssh localhost
    

    如果需要密码通过以下步骤,生成公钥并添加到ssh授权文件中

    ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 0600 ~/.ssh/authorized_keys
    

    启动

    format namenode

    第一启动需要格式化namenode

    bin/hdfs namenode -format
    

    启动本地伪分布式集群

    sbin/start-dfs.sh
    jps
    

    显示出如下三个进程表示启动成功


    image.png

    测试
    NameNode - http://localhost:50070/
    使用demo测试

    bin/hdfs dfs -mkdir /user
    bin/hdfs dfs -mkdir /user/titengjiang
    bin/hdfs dfs -mkdir input
    bin/hdfs dfs -put etc/hadoop/*.xml input
    bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar grep input output 'dfs[a-z.]+'
    
    image.png

    注意user后面的username为当前启动hadoop的用户名

    生产分布式集群搭建

    生产服务器目前使用三台作为hadoop集群,每台服务器,每台服务器挂载12块硬盘


    image.png

    内存为


    image.png
    每台服务器友90G
    部署计划如下

    hadoop-1 namenode
    hadoop-2 secondary datanode
    hadoop-3 datanode

    下载

    安装jdk1.8,下载hadoop-2.7.5解压到每个服务器上.

    创建用户配置ssh免密

    三台配置ssh authorized_keys,将三台ssh 公钥写入authorized_keys中,通过
    scp同步到每台服务器中

    scp -P 2014  authorized_keys xg-mt-grandapm-lindb-1:~/.ssh/
    

    相互测试ssh 是否免密

    设置data1-data12目录权限

    sudo chown -R username:usergroup /data2 /data3 /data4 /data5 /data6 /data7 /data8 /data9 /data10 /data11 /data12 
    

    username:usergroup为实际的用户和用户组
    目录没有读写权限启动时可能会出现如下错误


    image.png

    其实并不是硬盘损坏而是权限问题

    配置hadoop-1 namenode

    core-site.xml

    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://xg-mt-grandapm-lindb-1:9000</value>
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/home/cassandra/platform/hadoop-2.7.5/tmp</value>
        </property>
    </configuration>
    

    xg-mt-grandapm-lindb-1为hadoop-1主机名

    hdfs-site.xml

    <configuration>
        <!-- 设置namenode的http通讯地址 -->
        <property>
            <name>dfs.namenode.http-address</name>
            <value>xg-mt-grandapm-lindb-1:50070</value>
        </property>
    
        <!-- 设置secondarynamenode的http通讯地址 -->
        <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>xg-mt-grandapm-lindb-2:50090</value>
        </property>
    
        <!-- 设置namenode存放的路径 -->
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>/home/cassandra/platform/hadoop-2.7.5/name</value>
        </property>
    
        <!-- 设置hdfs副本数量 -->
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
          <property>
            <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
            <value>false</value>
            </property>
    </configuration>
    

    namenode 节点不作为datanode使用

    mapred-site.xml 启动yarn

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

    yarn-site.xml

        <!-- 设置 resourcemanager 在哪个节点-->
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>xg-mt-grandapm-lindb-1</value>
        </property>
    
        <!-- reducer取数据的方式是mapreduce_shuffle -->
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
    
        <property>
             <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
             <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
    

    slaves 配置管理的datanodes,每个节点一行

    xg-mt-grandapm-lindb-2
    xg-mt-grandapm-lindb-3
    

    配置hadoop-2/3 datanode

    scp hadoop-1的配置到2/3节点中

    hdfs-site.xml 增加datanode配置,挂载12块硬盘

    <property>
        <name>dfs.datanode.data.dir</name
        <value>/data1/hadoop/hdfs,/data2/hadoop/hdfs,/data2/hadoop/hdfs,/data3/hadoop/hdfs,/data4/hadoop/hdfs,/data5/hadoop/hdfs,/data6/hadoop/hdfs,/data7/hadoop/hdfs,/data8/hadoop/hdfs,/data9/hadoop/hdfs,/data10/hadoop/hdfs,/data11/hadoop/hdfs,/data12/hadoop/hdfs</value>
    </property>
    <property>
      <name>dfs.permissions</name>
      <value>false</value>
    </property>
    

    namenode节点启动整个集群

    bin/hdfs namenode -format
    sbin/start-dfs.sh
    sbin/start-yarn.sh
    

    jps 检查进程
    hadoop-1


    image.png
    image.png

    hadoop-2


    image.png

    hadoop-3


    image.png

    使用伪分布式集群的方式测试分布测试
    namenode


    ![image.png](https://img.haomeiwen.com/i6874053/18fb6ca11511357a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    yarn


    image.png

    整个集群搭建完毕

    相关文章

      网友评论

        本文标题:hadoop开发环境&&集群搭建

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