美文网首页
hadoop2.9.2集群搭建

hadoop2.9.2集群搭建

作者: 小王_min | 来源:发表于2020-04-14 22:04 被阅读0次

    0. 搭建前准备

        (1) Linux环境,本文以Ubuntu16.04为例(VMware中虚拟出的环境),并且以及做了ssh免密登录、主机名-ip映射以及固定ip操作

        (2) Hadoop 2.9.2程序包

        (3) JDK1.8+(Linux版)


    1. 搭建前相关约束

        (1) 所有的安装包以及第三方软件包都置于/opt/softwares

        (2) 所有的软件的软链接都置于/opt/links

        (3) 当前用户对/opt下的所有目录都有最高的权限,以防止出现权限不足的问题 

        (4) hostname为hadoop


    2. 集群的搭建

        (1) 解压jdk以及hadoop

    tar -zxvf jdk-8u201-linux-x64.tar.gz -C /opt/softwares/

    tar -zxvf hadoop-2.9.2.tar.gz -C /opt/softwares/

        (2) 创建软链接

    ln -sf /opt/softwares/jdk1.8.0_201 /opt/links/jdk

    ln -sf /opt/softwares/hadoop-2.9.2 /opt/links/hadoop

        (3) 配置环境变量 vi ~/.bashrc或者其他的三个配置文件,此步骤亦可不做,只是为了在任意路径下都可以执行环境变量中的可执行脚本,不过在执行时需要加上脚本的路径

    ###_JDK_CONF_###

    export JAVA_HOME=/opt/links/jdk

    export JRE_HOME=$JAVA_HOME/jre

    export CLASS_PATH=$JAVA_HOME/lib:$JRE_HOME/lib

    export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

    ###_HADOOP_CONF_###

    export HADOOP_HOME=/opt/links/hadoop

    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    # 用于提交mr任务时以及访问hdfs集群时所用身份

    export HADOOP_USER_NAME=yu

        (4) 生效~/.bashrc文件

    source ~/.bashrc

        (5) 测试是否安装成功,若显示版本号则表示成功

    java -version

    hadoop version

        (6) 配置hadoop环境

            0) 创建存放hadoop hdfs数据目录

                a. 存放hadoop hdfs数据目录

    mkdir -p ~/bigdata/hadoop/data

                b. 存放hadoop、yarn的pid(进程号)目录

    mkdir -p ~/bigdata/hadoop/pid/hadoop

    mkdir -p ~/bigdata/hadoop/pid/yarn

            1) 单机(不做任何hadoop环境配置)

            2) 伪分布

                a. 修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh

     第25行:export JAVA_HOME=/opt/links/jdk

    第113行:export HADOOP_PID_DIR=/home/yu/bigdata/hadoop/pids/hadoop

                (113行影响namenode、datanode以及secondarynamenode的pid文件存储位置)

               b. 修改$HADOOP_HOME/etc/hadoop/core-site.xml(hostname为自己主节点的主机名,需修改)

    <configuration>

        <property>

            <name>fs.defaultFS</name>

            <value>hdfs://hostname:9000</value>

        </property>

        <!-- 新增加的配置 可以按需配置 -->

        <!-- 设置hadoop默认临时目录-建议配置 -->

        <property>

            <name>hadoop.tmp.dir</name>

            <value>file:///home/yu/bigdata/hadoop/temp</value>

        </property>

        <!-- 流文件缓冲区大小,默认4096,可选 -->

        <property>

            <name>io.file.buffer.size</name>

            <value>4096</value>

        </property>

        <!-- 如出现权限问题,则需要配置,以下三个中的yu需配置成自己的用户名 -->

        <property>

            <name>hadoop.proxyuser.yu.hosts</name>

            <value>*</value>

        </property>

        <property>

            <name>hadoop.proxyuser.yu.groups</name>

            <value>*</value>

        </property>

        <property>

            <name>hadoop.http.staticuser.user</name>

            <value>yu</value>

        </property>

    </configuration>

                c. 修改$HADOOP_HOME/etc/hadoop/hdfs-site.xml,新增配置可以不配

    <configuration>

        <!-- 为namenode集群定义一个services name -->

        <property>

            <name>dfs.nameservices</name>

            <value>ns1</value>

        </property>

        <!-- 配置hdfs中副本个数 -->

        <property>

            <name>dfs.replication</name>

            <value>3</value>

        </property>

        <!-- 配置hdfs中块大小 2.x版本后默认128M -->

        <property>

            <name>dfs.blocksize</name>

            <value>64M</value>

        </property>

        <!-- 配置namenode的数据存放目录 -->

        <property>

            <name>dfs.namenode.name.dir</name>

            <value>file:///home/用户名/bigdata/hadoop/data/nn</value>

        </property>

        <!-- 配置datanode的数据存放目录 -->

        <property>

            <name>dfs.datanode.data.dir</name>

            <value>file:///home/用户名/bigdata/hadoop/data/dn</value>

        </property>

        <!-- 配置checkpoint的数据存放目录 -->

        <property>

            <name>dfs.namenode.checkpoint.dir</name>

            <value>file:///home/用户名/bigdata/hadoop/data/snn</value>

        </property>

        <!-- 配置edits的数据存放目录 -->

        <property>

            <name>dfs.namenode.checkpoint.edits.dir</name>

            <value>file:///home/用户名/bigdata/hadoop/data/snn</value>

        </property>

        <!--  新增的配置   -->

        <!-- WebHDFS Namenodes和Datanodes(REST API),可在web页对HDFS文件系统进行操作 -->

        <property>

            <name>dfs.webhdfs.enabled</name>

            <value>true</value>

        </property>

        <!-- NN,JT等所使用的web tracker页面服务器所使用的用户和组 -->

        <property>

            <name>dfs.web.ugi</name>

            <value>yu,yu</value>

        </property>

        <!-- 创建文件和目录使用umask值 默认为022,不建议修改为000-->

        <property>

            <name>fs.permissions.umask-mode</name>

            <value>000</value>

        </property>

        <!-- 在HDFS中启用权限检查 TRUE|FALSE 默认为true,若出现权限问题可设置成false -->

        <property>

            <name>dfs.permissions.enabled</name>

            <value>false</value>

        </property>

        <!-- 权限superusergroup组 -->

        <property>

            <name>dfs.permissions.superusergroup</name>

            <value>yu</value>

        </property>

        <!-- 集群中满足正常配置的数据块比例 -->

        <property>

            <name>dfs.namenode.safemode.threshold-pct</name>

            <value>0f</value>

        </property>

        <!-- NN尝试恢复之前失败的dfs.namenode.name.dir目录。在创建checkpoint是做此尝试。如果设置多个磁盘,建议允许 -->

        <property>

            <name>dfs.namenode.name.dir.restore</name>

            <value>true</value>

            </property>

        <!-- 设置hdfs集群的超级管理员 -->

        <property>

            <name>dfs.cluster.administrators</name>

            <value>*</value>

        </property>

        <!-- 设置secondary name node web 监听端口 -->

        <property>

            <name>dfs.namenode.secondary.http-address</name>

            <value>hostname:9001</value>

        </property>

        </configuration>

                d. 复制$HADOOP_HOME/etc/hadoop/mapred-site.xml.template并改文件名为mapred-site.xml

    cp mapred-site.xml.template mapred-site.xml

                e. 修改$HADOOP_HOME/etc/hadoop/mapred-site.xml

    <configuration>

        <!-- 指定运行mapreduce程序为yarn -->

        <property>

            <name>mapreduce.framework.name</name>

            <value>yarn</value>

        </property>

        <!-- 新增加的配置 -->

        <!-- 配置jobhistory服务器的地址 ip:端口 -->

        <property>

            <name>mapreduce.jobhistory.address</name>

            <value>hostname:10020</value>

        </property>

        <!-- 配置jobhistory服务器的weiui地址 ip:端口 -->

        <property>

            <name>mapreduce.jobhistory.webapp.address</name>

            <value>hostname:19888</value>

        </property>

        <!-- 配置在jobhistory服务器WebUI中最多显示多少条 -->

        <property>

            <name>mapreduce.jobhistory.joblist.cache.size</name>

            <value>20000</value>

        </property>

        <!-- 配置jobhistory数据存放目录 -->

        <property>

            <name>yarn.app.mapreduce.am.staging-dir</name>

            <value>/jobhistory/hadoop-yarn/staging</value>

        </property>

        <property>

            <name>mapreduce.jobhistory.intermediate-done-dir</name>

            <value>${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate</value>

        </property>

        <property>

            <name>mapreduce.jobhistory.done-dir</name>

            <value>${yarn.app.mapreduce.am.staging-dir}/history/done</value>

        </property>

        <!-- 设置是否开启小作业优化 -->

        <property>

            <name>mapreduce.job.ubertask.enable</name>

            <value>true</value>

        </property>

    </configuration>

                f. 修改$HADOOP_HOME/etc/hadoop/yarn-site.xml

    <configuration>

        <!-- 配置resourcemanager的hostname -->

        <property>

            <name>yarn.resourcemanager.hostname</name>

            <value>hostname</value>

        </property>

        <!-- 配置resourcemanager的adress -->

        <property>

            <name>yarn.resourcemanager.address</name>

            <value>hostname:18040</value>

        </property>

        <!-- 配置resourcemanager对AM暴露的地址 -->

        <property>

            <name>yarn.resourcemanager.scheduler.address</name>

            <value>hostname:18030</value>

        </property>

        <!-- RM对NM暴露地址,NM通过该地址向RM汇报心跳,领取任务 -->

        <property>

            <name>yarn.resourcemanager.resource-tracker.address</name>

            <value>hostname:18025</value>

        </property>

        <!-- 管理员可以通过该地址向RM发送管理命令等 -->

        <property>

            <name>yarn.resourcemanager.admin.address</name>

            <value>hostname:18141</value>

        </property>

        <!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序 -->

        <property>

            <name>yarn.nodemanager.aux-services</name>

            <value>mapreduce_shuffle</value>

        </property>

        <!-- 指定shuffle的类 -->

        <property>

            <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>

            <value>org.apache.hadoop.mapred.ShuffleHandler</value>

        </property>

        <!-- 中间结果存放位置,可配置多目录 -->

        <property>

            <name>yarn.nodemanager.local-dirs</name>

            <value>file:///home/用户名/bigdata/hadoop/data/nm</value>

        </property>

        <!-- 新增加的配置 -->

        <!-- 日志聚合服务器URL -->

        <property>

            <name>yarn.log.server.url</name>

            <value>http://hostname:19888/jobhistory/logs/</value>

        </property>

        <!-- 是否启用日志聚合。 日志收集聚合 每个容器的日志,这些日志移动到文件系统 -->

        <property>

            <name>yarn.log-aggregation-enable</name>

            <value>true</value>

        </property>

        <!-- Web应用程序代理服务器 需单独启动 yarn-daemon.sh -->

        <property>

            <name>yarn.web-proxy.address</name>

            <value>hostname:20000</value>

        </property>

        <!-- 日志保存时间 -->

        <property>

            <name>yarn.log-aggregation.retain-seconds</name>

            <value>-1</value>

        </property>

        <!-- 日志存放目录 -->

        <property>

            <name>yarn.nodemanager.remote-app-log-dir</name>

            <value>/logs</value>

        </property>

        <!-- 是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->

        <property>

            <name>yarn.nodemanager.pmem-check-enabled</name>

            <value>false</value>

        </property>

        <!-- 是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->

        <property>

            <name>yarn.nodemanager.vmem-check-enabled</name>

            <value>false</value>

        </property>

    </configuration>

                g. 修改$HADOOP_HOME/etc/hadoop/yarn-env.sh,添加如下配置

    # 设置yarn PID文件存储位置,影响NodeManager、ResourceManager PID文件存储

    export YARN_PID_DIR=/home/yu/bigdata/hadoop/pids/yarn

                h. 修改$HADOOP_HOME/etc/hadoop/mapred-env.sh

    # 设置mapred PID PID文件存储位置,影响JobHistoryServer PID文件存储

    第28行:export HADOOP_MAPRED_PID_DIR=/home/yu/bigdata/hadoop/pids/mr

            3) 全分布

                a. 将一个节点上的java、hadoop环境以及配置文件发送至其他机器

    scp 源文件目录 用户名@hostname:目标目录

                b. 步骤同伪分布

               c. 修改$HADOOP_HOME/etc/hadoop/slaves文件,加入从节点的hostname,注意需要一行一个ip或者是hostname

    hadoop02

    hadoop03

    hadoop04

        (6) 格式化HDFS文件系统,若出现has been successfully formatted字样则说明格式化成功

    hdfs namenode -format

        (7) 启动集群

            1) 启动/停止hdfs集群 (8/9一起启动命令:start-all.sh/stop-all.sh)

    start-dfs.sh/stop-dfs.sh

            2) 启动/停止snn(secondarynamenode)

    hadoop-daemon.sh start/stop secondarynamenode

            3) 启动/停止yarn集群

    start-yarn.sh/stop-yarn.sh

            4) 启动/停止jobhistory服务器

    mr-jobhistory-daemon.sh start/stop historyserver

    yarn-daemon.sh start/stop historyserver

           5) 启动/停止WEB代理服务器

                a. 作为守护进程启动(一般使用这种)

    yarn-daemon.sh start proxyserver

                b. 独立启动

    yarn proxyserver

        (8) 测试MR(计算圆周率pi)

    hadoop jar /opt/hadoop-2.3.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.3.0.jar pi 20 10

        (9) WEB访问

            1) hdfs集群访问端口 50070

            2) yarn集群访问端口 8088


      (10) 所遇到的问题

            1) namenode可以正常启动,datanode无法启动

                a. 重新格式化

                    删除所有节点~/bigdata/hadoop/data目录下的所有文件

                    -> 重新执行 hadoop namenode -format

                原因:namenode的VERSION中的clusterID与datanode中中的VERSION的clusterID不一致导致

    相关文章

      网友评论

          本文标题:hadoop2.9.2集群搭建

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