hadoop 基础安装配置

作者: monotseng | 来源:发表于2016-11-20 21:36 被阅读167次

    1. 目的说明

    本文档提供apache hadoop的基础安装手册,适用于快速入门练习使用;生产环境配置,在关键步骤和重要参数设置需要小心对待。

    2. 参考文档

    《hadoop权威指南-第3版》
    hadoop Reference Document

    3. 系统准备

    准备3台centos6.5服务器,机器配置保证2g内存,连通外网。

    server info:
    hostname            ip
    master          192.168.0.180
    slave1          192.168.0.181
    slave2          192.168.0.182
    

    准备oracle JDK

    http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html
    

    准备apache hadoop

    http://hadoop.apache.org/releases.html
    #选择已经编译好的binary
    

    4. 基础环境配置

    基础环境搭建,主要是用户创建、JDK环境和ssh无密码登陆;在虚拟机环境中,通常先在一个虚拟机上配置好JDK和ssh无密码登陆,只需要clone或者直接copy2份虚拟机,然后更改ip和主机名。本次实验是按完整的3台完整虚拟机操作,安装时选择basic server。

    4.1 网络环境配置

    先在master机器上操作,slave1和slave2重复同样的操作:

    主机名配置

    vi /etc/sysconfig/network
    #修改hostname
    hostname=master
    

    hosts配置

    vi /etc/hosts
    #添加以下内容
    192.168.0.180   master
    192.168.0.181   slave1
    192.168.0.182   slave2
    

    网卡文件配置

    vi /etc/sysconfig/network-scripts/ifcfg-etho
    #修改以下内容
    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=static
    IPADDR=192.168.0.181
    GATEWAY=192.168.0.1
    NETMASK=255.255.255.0
    
    #重启网络服务
    service network restart
    

    DNS配置

    vi /etc/resolv.conf
    #添加以下内容
    nameserver  114.114.114.114
    

    关闭防火墙

    service iptables stop
    chkconfig iptables off
    

    关闭selinux

    vi /etc/selinux/config
    #修改SELINUX
    SELINUX=disabled
    

    4.2 JDK安装配置

    #检查是否安装JDK:
    rpm -qa | grep java
    
    #卸载JDK
    rpm -e java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
    rpm -e java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
    
    #安装oracle JDK
    scp jdk-8u111-linux-x64.tar.gz root@master:~/
    
    mkdir -p /usr/java
    tar -zxvf jdk-8u111-linux-x64.tar.gz -C /usr/java
    
    #修改环境变量
    vi /etc/profile
    
    #末行添加以下内容
    export JAVA_HOME=/usr/java/jdk1.8.0_111
    export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin
    #环境变量生效
    source /etc/profile
    
    #验证环境变量
    java -version
    javac -version
    

    4.3 用户和目录创建

    #创建用户组和用户
    groupadd hadoop
    useradd -g hadoop -s /bin/bash -d /home/hadoop -m hadoop
    passwd hadoop
    
    #创建hadoop介质目录
    mkdir -p /opt/hadoop/
    
    #创建hadoop存储目录
    mkdir -p /hadoop/hdfs/name
    mkdir -p /hadoop/hdfs/data
    mkdir -p /hadoop/tmp
    
    #目录权限
    chown hadoop.hadoop -R /hadoop
    chown hadoop.hadoop -R /opt/hadoop
    

    4.4 ssh无密码登陆

    master和slave操作。

    #生成公钥私钥
    su - hadoop
    ssh-keygen -t rsa -P ''
    chmod 700 ~/.ssh
    

    master操作

    #复制公钥到slave机器
    ssh-copy-id hadoop@slave1
    ssh-copy-id hadoop@slave2
    
    #测试是否可以登陆
    ssh slave1
    ssh slave2
    

    5. hadoop安装配置

    5.1 hadoop介质配置

    上传hadoop介质

    scp hadoop-2.7.3.tar.gz root@master:~/
    

    配置hadoop介质和环境变量

    su - hadoop
    
    #解压介质
    tar -zxvf hadoop-2.7.3.tar.gz -C /opt/hadoop/
    
    #编辑环境变量,slave最好也配置一下hadoop环境变量。
    vi ~/.bash_profile
    #添加以下内容
    export HADOOP_HOME=/opt/hadoop/hadoop-2.7.3/
    
    #PATH增加hadoop的bin目录
    PATH=$PATH:$HOME/bin:$HADOOP_HOME/bin
    
    #使之生效
    source ~/.bash_profile
    

    5.2 配置core-site.xml

    vi core-site.xml
    #修改以下内容
    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://master:9000</value>
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>file:/hadoop/tmp</value>
        </property>
        <property>
            <name>io.file.buffer.size</name>
            <value>131702</value>
        </property>
    </configuration>
    

    5.3 配置hdfs-site.xml

    vi hdfs-site.xml
    #添加以下内容
    <configuration>
       <property>
           <name>dfs.namenode.name.dir</name>
           <value>file:/hadoop/hdfs/name</value>
       </property>
       <property>
           <name>dfs.datanode.data.dir</name>
           <value>file:/hadoop/hdfs/data</value>
       </property>
       <property>
           <name>dfs.replication</name>
           <value>2</value>
       </property>
       <property>
           <name>dfs.namenode.secondary.http-address</name>
           <value>master:9001</value>
       </property>
       <property>
       <name>dfs.webhdfs.enabled</name>
       <value>true</value>
       </property>
    </configuration>
    

    5.4 配置mapred-site.xml

    #默认没有mapred-site.xml,需要copy一份模版
    cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
    vi etc/hadoop/mapred-site.xml
    
    #添加以下内容
    <configuration>
       <property>
            <name>mapreduce.framework.name</name>
           <value>yarn</value>
       </property>
       <property>
           <name>mapreduce.jobhistory.address</name>
           <value>master:10020</value>
       </property>
       <property>
           <name>mapreduce.jobhistory.webapp.address</name>
           <value>master:19888</value>
       </property>
    </configuration>
    

    5.5 配置yarn-site.xml

    vi yarn-site.xml
    #添加以下内容
    <configuration>
       <property>
           <name>yarn.nodemanager.aux-services</name>
           <value>mapreduce_shuffle</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>
       <property>
           <name>yarn.nodemanager.resource.memory-mb</name>
           <value>1600</value>
       </property>
    </configuration>
    ```
    
    ### 5.6 配置相关env.sh
    配置hadoop-env.sh
    ```bash
    cd $HADOOP_HOME
    vi etc/hadoop/hadoop-env.sh
    ```
    
    配置yarn-env.sh
    ```bash
    cd $HADOOP_HOME
    vi etc/hadoop/yarn-env.sh
    #修改JAVE_HOME
    #修改JAVA_HEAP_MAX=-Xmx3072m
    ```
    5.7 配置slave文件
    添加slave机器
    ```bash
    vi etc/hadoop/slaves
    #添加以下内容
    slave1
    slave2
    ```
    
    ### 5.8 同步hadoop介质
    ```bash
    scp -r hadoop-2.7.3 slave1:/opt/hadoop
    scp -r hadoop-2.7.3 slave2:/opt/hadoop
    ```
    ## 6. hadoop环境验证
    
    ### 6.1 hadoop进程管理
    ```bash
    #启动hadoop进程
    cd $HADOOP_HOME
    sbin/start-dfs.sh
    sbin/start-yarn.sh
    
    #关闭hadoop进程
    sbin/stop-dfs.sh
    sbin/stop-yarn.sh
    #start-all.sh和stop-all.sh虽然支持,但已经标明被废弃了。
    ```
    ### 6.2 hadoop运行状态检查
    分别在3台虚拟机上验证进程
    master状态:
    ```bash
    #状态检查
    hdfs dfsadmin -report
    
    #进程检查
    [hadoop@master hadoop-2.7.3]$ jps
    31616 Jps
    31355 ResourceManager
    31071 SecondaryNameNode
    ```
    
    slave状态:
    ```bash
    [hadoop@slave1 ~]$ jps
    30885 NodeManager
    30987 Jps
    30669 DataNode
    ```
    登陆web管理平台
    ```
    http://master:8088/cluster
    ```
    
    ![Paste_Image.png](https://img.haomeiwen.com/i68803/ea481d5c8dc91eec.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    
    ```
    http://master:50070
    ```
    
    ![Paste_Image.png](https://img.haomeiwen.com/i68803/d0a4caf99ea5b853.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    ### 6.3 运行wordcount示例
    ```bash
    #创建hadoop目录
    hdfs dfs -mkdir /test
    
    #上传运行的文本,随便写几个单词
    hdfs dfs -put test.txt /test/
    hdfs dfs -ls /test/
    
    #运行wordcount
    cd $HADOOP_HOME
    hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /test/test.txt /test/out
    
    #验证运行结果
    [hadoop@master hadoop-2.7.3]$ hdfs dfs -ls /test/out
    Found 2 items
    -rw-r--r--   2 hadoop supergroup          0 2016-11-20 20:56 /test/out/_SUCCESS
    -rw-r--r--   2 hadoop supergroup         41 2016-11-20 20:56 /test/out/part-r-00000
    
    [hadoop@master hadoop-2.7.3]$ hdfs dfs -cat /test/out/part-r-00000
    china   1
    hadoop  1
    hello   1
    people  1
    word    1
    ```
    
    ## 7. hadoop故障排查
    ### 7.1 启动前的检查
    检查防火墙关闭
    检查hosts正确配置
    检查主机网络正确配置
    检查selinux关闭
    检查JDK安装正确
    检查ssh无密码登陆正确
    检查hadoop存储和介质目录权限正确
    检查hadoop配置文件(重要的4个)是否正确
    
    检查yarn-site.xml,此项参数设计hadoop性能调优,入门暂不考虑这个参数,保证大于1536即可,否则有可能会导致wordcount运行失败。
     ```xml
     <property>
           <name>yarn.nodemanager.resource.memory-mb</name>
           <value>1600</value>
       </property>
    ```
    检查yarn-env.sh,此项参数涉及hadoop性能调优,入门暂不考虑这个参数。
    ```bash
    JAVA_HEAP_MAX=-Xmx3072m
    ```
    
    ### 7.2 运行日志
    运行日志在$HADOOP_HOME/logs中:
    ```bash
    cd $HADOOP_HOME
    [hadoop@master logs]$ ls
    hadoop-hadoop-namenode-master.log             hadoop-hadoop-secondarynamenode-master.out.2
    hadoop-hadoop-namenode-master.out             hadoop-hadoop-secondarynamenode-master.out.3
    hadoop-hadoop-namenode-master.out.1           SecurityAuth-hadoop.audit
    hadoop-hadoop-namenode-master.out.2           yarn-hadoop-resourcemanager-master.log
    hadoop-hadoop-namenode-master.out.3           yarn-hadoop-resourcemanager-master.out
    hadoop-hadoop-secondarynamenode-master.log    yarn-hadoop-resourcemanager-master.out.1
    hadoop-hadoop-secondarynamenode-master.out    yarn-hadoop-resourcemanager-master.out.2
    hadoop-hadoop-secondarynamenode-master.out.1  yarn-hadoop-resourcemanager-master.out.3
    
    #查看日志信息,slave机器类似操作
    vi hadoop-hadoop-namenode-master.log
    ```

    相关文章

      网友评论

        本文标题:hadoop 基础安装配置

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