hadoop2.9.2集群搭建

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为自己主节点的主机名,需修改)

    

        fs.defaultFS

        hdfs://hostname:9000

    

   

   

   

        hadoop.tmp.dir

        file:///home/yu/bigdata/hadoop/temp

    

   

   

        io.file.buffer.size

        4096

    

    

    

        hadoop.proxyuser.yu.hosts

        *

    

    

        hadoop.proxyuser.yu.groups

        *

    

    

        hadoop.http.staticuser.user

        yu

    

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

    

    

        dfs.nameservices

        ns1

    

    

    

        dfs.replication

        3

    

    

    

        dfs.blocksize

        64M

    

    

    

        dfs.namenode.name.dir

        file:///home/用户名/bigdata/hadoop/data/nn

    

    

   

        dfs.datanode.data.dir

        file:///home/用户名/bigdata/hadoop/data/dn

    

    

    

        dfs.namenode.checkpoint.dir

        file:///home/用户名/bigdata/hadoop/data/snn

    

    

    

        dfs.namenode.checkpoint.edits.dir

        file:///home/用户名/bigdata/hadoop/data/snn

    

    

    

    

        dfs.webhdfs.enabled

        true

    

    

    

        dfs.web.ugi

        yu,yu

    

    

    

        fs.permissions.umask-mode

        000

    

    

    

        dfs.permissions.enabled

        false

    

    

   

        dfs.permissions.superusergroup

        yu

   

    

    

        dfs.namenode.safemode.threshold-pct

        0f

   

    

    

        dfs.namenode.name.dir.restore

        true

        

   

    

        dfs.cluster.administrators

        *

    

    

    

        dfs.namenode.secondary.http-address

        hostname:9001

   

    

            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

    

    

        mapreduce.framework.name

        yarn

    

    

    

    

        mapreduce.jobhistory.address

        hostname:10020

   

    

    

        mapreduce.jobhistory.webapp.address

        hostname:19888

    

    

    

        mapreduce.jobhistory.joblist.cache.size

        20000

    

    

    

        yarn.app.mapreduce.am.staging-dir

        /jobhistory/hadoop-yarn/staging

    

    

        mapreduce.jobhistory.intermediate-done-dir

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

    

    

        mapreduce.jobhistory.done-dir

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

    

    

    

        mapreduce.job.ubertask.enable

        true

    

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

    

   

        yarn.resourcemanager.hostname

        hostname

    

    

    

        yarn.resourcemanager.address

        hostname:18040

    

    

    

        yarn.resourcemanager.scheduler.address

        hostname:18030

    

    

    

        yarn.resourcemanager.resource-tracker.address

        hostname:18025

    

    

   

        yarn.resourcemanager.admin.address

        hostname:18141

    

    

   

        yarn.nodemanager.aux-services

        mapreduce_shuffle

    

    

    

        yarn.nodemanager.auxservices.mapreduce.shuffle.class

        org.apache.hadoop.mapred.ShuffleHandler

    

    

    

        yarn.nodemanager.local-dirs

        file:///home/用户名/bigdata/hadoop/data/nm

    

    

    

    

        yarn.log.server.url

        http://hostname:19888/jobhistory/logs/

    

    

    

        yarn.log-aggregation-enable

        true

    

    

   

        yarn.web-proxy.address

        hostname:20000

    

    

    

        yarn.log-aggregation.retain-seconds

        -1

    

    

    

        yarn.nodemanager.remote-app-log-dir

        /logs

    

   

    

        yarn.nodemanager.pmem-check-enabled

        false

    

    

    

        yarn.nodemanager.vmem-check-enabled

        false

    

            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集群搭建)