• Hadoop2.5.2集群部署(完全分布式)


    环境介绍

    硬件环境

    CPU 4 MEM 4G 磁盘 60G 

    软件环境

    OS:centos6.5版本 64位

    Hadoop:hadoop2.5.2 64位

    JDK: JDK 1.8.0_91

    主机配置规划

    Hadoop01  172.16.1.156   (NameNode)
    Hadoop02  172.16.1.157     (DataNode)
     
    Hadoop03  172.16.1.158     (DataNode)

    设置主机名

    这里主机名修改不是必须条件,但是为了操作简单,建议将主机名设置一下,需要修改调整各台机器的hosts文件配置,命令如下:
     

    如果没有足够的权限,可以切换用户为root

    三台机器统一增加以下host配置:

    dd8aa2cfaa55beaa530a49a643e349bb913d3b24

    配置免密码登录SSH

    1)生成密钥:
    ssh-keygen -t rsa  

    2)将id_dsa.pub(公钥)追加到授权key中:

    cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys    

    3)将认证文件复制到另外两台DataNode节点上:

    scp ~/.ssh/authorized_keys 172.16.1.157:~/.ssh/    

    scp ~/.ssh/authorized_keys 172.16.1.158:~/.ssh/  

    3)测试:

    ssh hadoop02或ssh hadoop03

    各节点安装JDK

    (1)检查jdk版本、卸载openjdk版本

    查看目前安装openjdk信息:rpm -qa|grep java

    0360cbce130086d484a6657c7492222bc18e473d

    卸载以上三个文件(需要root权限,登录root权限卸载)

    rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64

    rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64

    rpm -e --nodeps tzdata-java-2013g-1.el6.noarch

     
    8c680e19bed5f5efd4f83f0b53cc6e6b8447b522
     
    (2)选择版本是jdk-8u91-linux-x64.gz
    (3)解压安装:
    7ce92ab185ec6a7ca7fc101f38c1bf73feb594ef
     (4)重命名jdk为jdk1.8(用mv命令)
     
    ef13f49b7f50896e3db3c57d72d3e238f3c04265
     (5) 配置环境变量:vi /etc/profile加入以下三行
            #JAVA_HOME  
            export JAVA_HOME=/home/hadoop/jdk1.8
            export PATH=$JAVA_HOME/bin:$PATH 
      (6)执行source /etc/profile使环境变量的配置生效
     (7)执行Java –version查看jdk版本,验证是否成功
     (8)将hadoop01机器上安装好JDK复制到另外两台节点上
     
    0023fba61d8728eea4f130a0e3cebb7a15831a9b
    92e3a219aeab4019f6d707b3ab81ab138b2e9ef7

    Hadoop安装

    每台节点都要安装

     
    Hadoop。 

    上传

     
    hadoop-2.5.2.tar.gz 

    到用户

     
    /home/hadoop/software 

    目录下。

     

    解压

    tar -zvxf hadoop-2.5.2.tar.gz  -C /home/hadoop/

    添加环境变量

    vi  /etc/profile,尾部添加如下
    export JAVA_HOME=/home/hadoop/jdk1.8
    export HADOOP_HOME=/home/hadoop/hadoop-2.5.2
    export HADOOP_COMMON_HOME=$HADOOP_HOME
    export HADOOP_HDFS_HOME=$HADOOP_HOME
    export HADOOP_MAPRED_HOME=$HADOOP_HOME
    export HADOOP_YARN_HOME=$HADOOP_HOME
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
     
    export CLASSPATH=.:$JAVA_HOME/lib:$HADOOP_HOME/lib:$CLASSPATH
    export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH 
    99d9ea8a27d9029686a64515807325ff79f82214

    设置环境变量立即生效

    source /etc/profile

    配置Hadoop文件

    (1) core-site.xml
     
    <configuration>
         <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoop01:9000</value>
         </property>
         <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/home/hadoop/hadoop-2.5.2/hadoop_tmp</value>
         </property>
         <property>
                <name>io.file.buffer.size</name>
                <value>131072</value>
         </property>
    </configuration>
     
    (2)hdfs-site.xml 
     
    <configuration>
           <property>
                   <name>dfs.replication</name>
                    <value>2</value>
           </property>
           <property>
                    <name>dfs.namenode.secondary.http-address</name>
                   <value> 
    hadoop01
     
    :9001</value>
           </property>
           <property>
                  <name>dfs.namenode.name.dir</name>
                  <value>file: 
    /home/hadoop/hadoop-2.5.2
     
    /dfs/name</value>
                  <description>namenode上存储hdfs元数据</description>
           </property>
           <property>
                   <name>dfs.datanode.data.dir</name>
                   <value>file:/ 
    home/hadoop/hadoop-2.5.2
     
    /dfs/data</value>
     
                   <description>datanode上数据块物理存储位置</description>
           </property>
           <property>
                   <name>dfs.webhdfs.enabled</name>
                    <value>true</value>
           </property>
    </configuration> 
     
    注:访问namenode的 
    webhdfs 
    使用50070端口,访问datanode的webhdfs使用50075端口。要想不区分端口,直接使用namenode的IP和端口进行所有webhdfs操作,就需要在所有datanode上都设置hdfs-site.xml中dfs.webhdfs.enabled为true。
     
     
     
    (3)mapred-site.xml
    <configuration>
           <property>
                 <name>mapreduce.framework.name</name>
                 <value>yarn</value>
          </property>
          <property>
                 <name>mapreduce.jobhistory.address</name>
                 <value>hadoop01:10020</value>
          </property>
          <property>
                 <name>mapreduce.jobhistory.webapp.address</name>
                 <value>hadoop01:19888</value>
          </property>
    </configuration> 
    jobhistory是Hadoop自带一个历史服务器,记录Mapreduce历史作业。默认情况下,jobhistory没有启动,可用以下命令启动:
    sbin/mr-jobhistory-daemon.sh start historyserver  
     
    (4)yarn-site.xml
    <configuration>
           <property>
                  <name>yarn.nodemanager.aux-services</name>
                  <value>mapreduce_shuffle</value>
           </property>
           <property>
                   <name>yarn.resourcemanager.address</name>
                   <value> 
    hadoop01
     
    :8032</value>
           </property>
           <property>
                  <name>yarn.resourcemanager.scheduler.address</name>
                  <value>hadoop01:8030</value>
           </property>
           <property>
                  <name>yarn.resourcemanager.resource-tracker.address</name>
                  <value>hadoop01:8031</value>
           </property>
           <property>
                   <name>yarn.resourcemanager.admin.address</name>
                   <value>hadoop01:8033</value>
           </property>
           <property>
                   <name>yarn.resourcemanager.webapp.address</name>
                   <value>hadoop01:8088</value>
           </property>
    </configuration>  

    (5)修改slaves文件,添加datanode节点hostname到slaves文件中

     
    hadoop01
    hadoop02
    (6) 

    如果已经配置了JAVA_HOME环境变量,hadoop-env.sh与yarn-env.sh这两个文件不用修改,因为里面配置就是:

      export JAVA_HOME=${JAVA_HOME}
    
    
    如果没有配置JAVA_HOME环境变量,需要分别在hadoop-env.sh和yarn-env.sh中 
    手动
    添加
    JAVA_HOME 
    export JAVA_HOME= 
    /home/hadoop/jdk1.8
     
    最后,将整个hadoop-2.5.2文件夹及其子文件夹使用scp复制到两台Slave相同目录中:
    4f67c73d4bd9d0d76391a4e8e069cf1acd7f937d
    e8d4ed6aa9862b21fc48ba7180a66d3fa803fa42

    运行Hadoop

    格式化

    hdfs namenode –format  
    3e67d987b311dd624a3a48ea868353ce2d94eb88

    启动Hadoop

    start-dfs.sh   
    start-yarn.sh  
    可以用一条命令:
    start-all.sh

    停止Hadoop

    stop-all.sh 

    JPS查看进程

    master主节点进程:
     
    1c96c36a082764975bda0619b125b4f72520b157
    slave数据节点进程:
    a668105c8df4916145dc998acb8618fe7b6bfb75

    通过浏览器查看集群运行状态

    http://172.16.1.156:50070
    d7a62127ecf57d24dadf00918bc4e95311c24440
    http://172.16.1.156:8088/
    8b8cbd075f8fe729c3d46173df45256daaa72bcb
    http://172.16.1.156:19888
    8a2d8dadf86138cab6d0c25f2f829c6d5bd02346
    jobhistory是Hadoop自带一个历史服务器,记录Mapreduce历史作业。默认情况下,jobhistory没有启动,可用以下命令启动:
    sbin/mr-jobhistory-daemon.sh start historyserver 
    f0f637647312d84ff825a34cd67af66a9c7ecf9d

    测试Hadoop

    1)建立输入文件:

    vi wordcount.txt   

    输入内容为: 

    hello you

    hello me

    hello everyone

    2)建立目录

    hadoop fs -mkdir /data/wordcount    

    hadoop fs –mkdir /output/   

    目录/data/wordcount用来存放Hadoop自带WordCount例子的数据文件,运行这个MapReduce任务结果输出到/output/wordcount目录中。

    3)上传文件

    hadoop fs -put wordcount.txt/data/wordcount/   

    4)执行wordcount程序

    hadoop jar usr/local/program/Hadoop-2.5.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.1.jar wordcount /data/wordcount /output/wordcount/    

    5)查看结果

    hadoop fs -text /output/wordcount/part-r-00000    

    [root@m1mydata]# hadoop fs -text /output/wordcount/part-r-00000  
    everyone  1 
    hello  3  
    me    1  
    you   1 

    搭建中遇到问题总结

    问题一:
    在配置环境变量过程可能遇到输入命令ls命令不能识别问题:
    ls -bash: ls: command not found
    原因:在设置环境变量时,编辑profile文件没有写正确,将export PATH=$JAVA_HOME/bin:$PATH中冒号误写成分号 ,导致在命令行下ls等命令不能够识别。
    解决方案:
     export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    问题二:
    在主机上启动hadoop集群,然后使用jps查看主从机上进程状态,能够看到主机上的resourcemanager和各个从机上的nodemanager,但是过一段时间后,从机上的nodemanager就没有了,主机上的resourcemanager还在。
    原因是防火墙处于开启状态:
    注:nodemanager启动后要通过心跳机制定期与RM通信,否则RM会认为NM死掉,会停止NM服务。
    service 方式
    开启: service iptables start 
    关闭: service iptables stop
  • 相关阅读:
    Python Tkinter canvas oval原理
    ButterKnife你需要知道的点
    RecyclerView不同类型Item的展示
    PNG图片小结
    安装应用
    java.io.IOException: open failed: ENOENT (No such file or directory)open failed: EISDIR (Is a directory)
    YouTube视频插入Markdown
    Android icons集合
    vue动态绑定类样式ClassName知多少
    js正则表达式中的正向肯定预查和正向否定预查
  • 原文地址:https://www.cnblogs.com/dtstack/p/9957238.html
Copyright © 2020-2023  润新知