美文网首页
02.hadoop环境构建

02.hadoop环境构建

作者: 伊落 | 来源:发表于2018-04-29 20:28 被阅读0次

    一. 系统配置与资源准备

    1. 操作系统:centos6.8
    2. java版本:1.7
    3. hadoop版本:2.5.0

    二. 环境配置

    1. 禁用selinux

    vim /etc/sysconfig/selinux
    SELINUX=disabled
    

    2.关闭防火墙

    service iptables status  # 查看防火墙状态
    service iptables stop  # 关闭防火墙
    chkconfig iptables off  # 关闭防火墙开机自启动
    

    3.配置HOSTNAME(需要重启电脑)

    vim /etc/sysconfig/network
    HOSTNAME=bigguider21.com
    

    4.配置域名解析

    vim /etc/hosts
    192.168.28.21 bigguider21.com
    

    5.网络环境配置

    [root@bigguider21 hadoop-2.5.0-cdh5.3.6]# more /etc/sysconfig/network-scripts/ifcfg-eth0 
    DEVICE=eth0
    TYPE=Ethernet
    UUID=a8ef3dc5-deee-48cd-9e16-9e93815ccbc9
    ONBOOT=yes
    NM_CONTROLLED=yes
    BOOTPROTO=none
    HWADDR=00:0C:29:6D:D2:A0
    IPADDR=192.168.28.21  #ip地址
    PREFIX=24
    GATEWAY=192.168.28.2  #网关
    DNS1=192.168.28.2
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=yes
    IPV6INIT=no
    NAME="System eth0"
    

    三. 创建目录结构

    --datas :数据文件夹
    --modules :软件安装文件夹
    --software : 软件源文件
    --tools : 工具文件夹

    cd ~
    mkdir datas modules software tools
    

    四. 安装并配置java

    1. 查看自带java并卸载

    rpm -qa |  grep java   # 查看安装java信息
    java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
    tzdata-java-2013g-1.el6.noarch
    java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
    # 卸载已安装java(多个用空格分割) 
    rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64 java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64 
    

    2. 安装java并配置环境变量

    # 解压java源文件
    tar -zxvf software/jdk-7u67-linux-x64.tar.gz -C modules/
    #配置环境变量
    vim /etc/profile
    export JAVA_HOME=/root/modules/jdk1.7.0_67
    export PATH=$PATH:$JAVA_HOME/bin
    #使配置生效
    source /etc/profile
    

    3. 查看是否安装成功

    java -version
    java version "1.7.0_67"
    Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
    Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
    

    五.Hadoop的安装与配置

    1. Hadoop安装与环境变量配置

    # 解压Hadoop源文件
    tar -zxvf software/hadoop-2.5.0-cdh5.3.6.tar.gz -C modules/
    # 配置环境变量
    vim /etc/profile
    export HADOOP_HOME=/root/modules/hadoop-2.5.0-cdh5.3.6
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    # 使配置生效
    source /etc/profile
    

    2.配置设置

    2.1 hadoop,mapreduce,yarn配置java路径

    vim etc/hadoop/hadoop-env.sh
    vim etc/hadoop/mapred-env.sh 
    vim etc/hadoop/yarn-env.sh 
    export JAVA_HOME=/root/modules/jdk1.7.0_67
    

    2.2 Hadoop基本配置

    # 创建临时文件目录
    mkdir -p hadoop安装路径/data/tmp
    # 修改core-site.xml
    [root@bigguider21 hadoop-2.5.0-cdh5.3.6]# vim etc/hadoop/core-site.xml 
    <configuration>
          <property>
                <!--系统文件默认访问入口-->
                <name>fs.defaultFS</name> 
                <value>hdfs://bigguider21.com:8020</value>
          </property>
          <property>
                 <!--系统生成文件的临时目录-->
                 <name>hadoop.tmp.dir</name>
                 <value>/root/modules/hadoop-2.5.0-cdh5.3.6/data/tmp</value>
          </property>
    </configuration>
    # 修改hdfs-site.xml
    [root@bigguider21 hadoop-2.5.0-cdh5.3.6]# vim etc/hadoop/hdfs-site.xml 
    <configuration>
           <property>
           <!--修改副本数量-->
                   <name>dfs.replication</name>
                   <value>1</value>
           </property>
    </configuration>
    # 修改slaves(从节点机器位置主机名)
    [root@bigguider21 hadoop-2.5.0-cdh5.3.6]# vim etc/hadoop/slaves
    bigguider21.com
    

    2.3 MapReduce配置文件修改

    [root@bigguider21 hadoop-2.5.0-cdh5.3.6]# mv etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
    vim etc/hadoop/mapred-site.xml
    <configuration>
             <!--使MapReduce运行在YARN上面-->
             <property>
                     <name>mapreduce.framework.name</name>
                     <value>yarn</value>
             </property>
    </configuration>
    

    2.4 YARN配置文件修改

    [root@bigguider21 hadoop-2.5.0-cdh5.3.6]# vim etc/hadoop/yarn-site.xml 
    <configuration>
         <property> <!--MapReduce运行服务-->
                 <name>yarn.nodemanager.aux-services</name>
                 <value>mapreduce_shuffle</value>
         </property>
         <!--resourcemanager默认为启动的机器-->
         <!--为分布式可以不进行配置,配置一般为主机名-->
         <property>
                 <name>yarn.resourcemanager.hostname</name>
                 <value>bigguider21.com</value>
        </property>
    </configuration>
    

    2.5 SecondaryNameNode配置(可选)

    1. 作用:1. 减少namenode启动时间,2.合并文件
    2. 原理:namenode启动时先读取fsimage文件,在读取edits文件,用户对HDFS操作越多,edits文件越大,导致读取时间过长,SecondaryNameNode合并fsimage/edits为新的fsimage,生成新的edits。用户对HDFS操作的任何行为操作都会记录在元数据文件,对于HDFS的操作会记录在编辑日志文件edits中。
    3. 配置:
    vim  $hadoop_home/etc/hadoop/hdfs-site.xml
    <property>
         <name>dfs.namenode.secondary.http-address</name>
         <value>bigguider21.com:50090</value>
    </property>
    
    1. 启动
    # 外部访问:bigguider21.com:50090
    sbin/hdaoop-daemon.sh start secondarynamenode
    

    2.6 MapReduce历史服务器(可选)

    1. 作用:记录历史数据
    2. 配置:
    vim  $hadoop_home/etc/hadoop/mapred-site.xml
    <!--MapReduce历史服务器,需要重启HDFS与YARN-->
    <!--内部交互地址-->
    <property>
           <name>mapreduce.jobhistory.address</name>
           <value>lee.cniao5.com:10020</value>
    </property>
    <!--外部交互地址-->
    <property>
           <name>mapreduce.jobhistory.webapp.address</name>
           <value>bigguider21.com:19888</value>
    </property>
    
    1. 启动:
    sbin/mr-jobhistory-daemon.sh start historyservier
    

    2.7 日志聚合(可选)

    1. 作用:将MapReduce产生的日志上传到HDFS对应目录中,便于从web页面查看。
    2. 配置:
    vim $hadoop_home/etc/hadoop/yarn-site.xml
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.log.server.url</name>
        <value>http://bigguider21.com:19888/jobhistory/logs</value>
    </property>
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>
    
    1. 启动:
    # 重启yarn
    

    2.8 文件权限(可选)

    1. 作用:HDFS的文件目录权限与Linux是完全一致的。(修改配置文件,使其不检测用户权限)
    2. 配置:
    vim $hadoop_home/etc/hadoop/hdfs-site.xml
    <property>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
    </property>
    
    1. 启动:
    # 重启yarn
    

    3. 格式化元数据

    # 格式化namenode
    # 在data/tmp文件夹下生成文件
    # 只能格式化一次,如果需要,将tmp文件下内容删除再格式化
    # 多次格式化会导致集群ID不一致,手动修改集群ID也可以多次格式化
    [root@bigguider21 hadoop-2.5.0-cdh5.3.6]# hdfs namenode -format
    

    4. 启动集群

    [root@bigguider21 modules]# hadoop-daemon.sh start namenode
    [root@bigguider21 modules]# hadoop-daemon.sh start datanode
    # [root@bigguider21 modules]# hadoop-daemon.sh start secondarynamenode
    [root@bigguider21 modules]# yarn-daemon.sh start resourcemanager
    [root@bigguider21 modules]# yarn-daemon.sh start nodemanager
    # [root@bigguider21 modules]# mr-jobhistory-daemon.sh start historyserver  #历史服务器
    

    5. 检验

    游览HDFS界面网址
    1. 192.168.28.21:50070
    2. bigguider21.com:50070
    启动SecondaryNameNode 外部访:bigguider21.com:50090
    外部管理界面:bigguider21.com:8088

    5.1.使用单词统计进行检验

    hdfs dfs -help  #查看版主文档
    #创建输入文件夹
    hdfs dfs -mkdir -p mapreduce/input
    #上传数据文件到输入文件夹
    hdfs dfs -put ~/data/s/file.input /user/root/maperduce/input
    #执行单词统计任务
    #在yarn上运行job时都必须打包jar
    #输出目录不存在时,任务运行完自动创建,防止任务结果覆盖
    bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /user/root/mapreduce/input /user/root/mapreduce/output
    #查看运行结果:_SUCCESS表示成功,结果在part-r-00000
    hdfs dfs -text /user/root/mapreduce/output/part-r-000000
    

    9. 常见问题

    9.1 集群ID不一致

    cd $hadoop_home/data/tmp/dfs/name/current/
    cat VERSION 
    # Mon Apr 30 01:53:32 CST 2018
    namespaceID=365367415
    clusterID=CID-d45ee400-25dd-440f-92c8-858153467c48 #集群id
    cTime=0
    storageType=NAME_NODE
    blockpoolID=BP-1315402128-192.168.28.21-1525024412095
    layoutVersion=-59
    
    1. 原因:tmp目录且清空就进行格式化。
    2. 方法:删除data/tmp目录下的文件后重新格式化。

    9.2 多用户毁用

    1. 原因:操作时多个用户同时使用。
    2. 方法:重新格式化

    9.3 pid号错误

    1. 原因:多个用户开启同一个进程时。
    2. 方法:删除/tmp文件下的.pid文件

    9.4 Navite警告

    1. 原因:信息中并没有获取到编译者在什么系统上编译Hadoop源码的。
    2. 方法:1.编译Hadoop源码;2.直接替换编译好的native本地库

    相关文章

      网友评论

          本文标题:02.hadoop环境构建

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