• Hadoop2.7.3+spark2.1.0+hbase0.98分布式集群部署


    运行环境配置(10.79.115.111-114)

    1、关闭防火墙与selinux

    关闭防火墙:

    CentOS 7.x默认使用的是firewall作为防火墙。

    systemctl stop firewalld.service #停止firewall

    systemctl disable firewalld.service #禁止firewall开机启动

    关闭selinux

    Redhat应用了SELinux去加强平安,永久封闭的举措为:

    修改 /etc/selinux/config 文件中的 SELINUX=”” 为 disabled ,然后重启服务器。

    重启后查看SELinux状态:执行getenforce命令

    2、卸载centos7自带openjdk并安装oracle jdk

     rpm -qa | grep java* 查看已安装列表

     rpm -e --nodeps 软件名  卸载此软件及其依赖软件

     然后在下载配置oracle jdk,我配置的JAVA_HOME=/opt/jdk1.8。

    3、ssh免登陆

       /usr/bin/ssh-keygen -t [rsa | dsa]

       PS:如果直接执行/usr/bin/ssh-keygen ssh-keygen,那么默认采用rsa 生成公钥跟私钥。

     4台服务器依次执行 /usr/bin/ssh-keygen-t,然后将~/.ssh/id_rsa.pub生成的公钥添加到CentOS7-1的~/.ssh/authorized_keys文件,之后通过scp命令将CentOS7-1的authorized_keys文件发送到另外三台服务器。

    如: scp  ~/.ssh/authorized_keys CentOS7-2:/~/.ssh/

    4、主机映射

    cat /etc/hosts

    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

    10.79.115.111 CentOS7-1

    10.79.115.112 CentOS7-2

    10.79.115.113 CentOS7-3

    10.79.115.114 CentOS7-4

    5、111-113安装配置zookeeper(基数台)

    我将zookeeper装在/opt路径下(cd /opt):

    wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz -P

    mv zookeeper-3.4.6 zookeeper

    cd zookeeper

    cp conf/zoo_sample.cfg conf/zoo.cfg

    #把zookeeper加入到环境变量

    "PATH=$PATH:/opt/zookeeper/bin" >> /etc/profile

    source /etc/profile 使配置立即生效
    Zookeeper集群配置:
    注意:搭建zookeeper集群时,一定要先停止已经启动的zookeeper节点。

    cat zoo.cfg

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/var/zookeeper/data
    dataLogDir=/var/zookeeper/logs
    clientPort=2181
    autopurge.snapRetainCount=500
    autopurge.purgeInterval=24
    server.1=10.79.115.111:2888:3888
    server.2=10.79.115.112:2888:3888
    server.3=10.79.115.113:2888:3888

    #创建相关目录,三台节点都需要

    mkdir -p /var/zookeeper/{logs,data}

    #其余zookeeper节点安装完成之后,同步配置文件zoo.cfg。

    创建ServerID标识

    除了修改zoo.cfg配置文件外,zookeeper集群模式下还要配置一个myid文件,这个文件需要放在dataDir/var/zookeeper/data目录下。

    这个文件里面有一个数据就是A的值(该A就是zoo.cfg文件中server.A=B:C:D中的A),在zoo.cfg文件中配置的dataDir路径中创建myid文件。

    #在10.79.115.111服务器上面创建myid文件,并设置值为1,同时与zoo.cfg文件里面的server.1保持一致,如下

    echo "1" > /var/zookeeper/data/myid

    #在10.79.115.112服务器上面创建myid文件,并设置值为2,同时与zoo.cfg文件里面的server.2保持一致,如下

    echo "2" > /var/zookeeper/data/myid

    #在10.79.115.113服务器上面创建myid文件,并设置值为3,同时与zoo.cfg文件里面的server.3保持一致,如下

    echo "3" > /var/zookeeper/data/myid
    到此,相关配置已完成
    启动每个服务器上面的zookeeper节点

    /opt/zookeeper/bin/zkServer.sh start
    PS:Zookeeper一些常用命令:

     在准备好相应的配置之后,可以直接通过zkServer.sh 这个脚本进行服务的相关操作

    • 1. 启动ZK服务:       sh bin/zkServer.sh start
    • 2. 查看ZK服务状态: sh bin/zkServer.sh status
    • 3. 停止ZK服务:       sh bin/zkServer.sh stop
    • 4. 重启ZK服务:       sh bin/zkServer.sh restart

    6、ntp时间同步

    10.79.0.60(ntp服务端)已搭好,配置ntp客户端(111-114)

    systemctl enable ntpd &&systemctl start ntpd(设ntpd服务开机自启并启动)

    编辑/etc/ntp.conf文件,请参考(111-114服务器任意一台的/etc/ntp.conf文件)。

    重启ntpd服务  #systemctl restart ntpd

    启动后,查看同步情况

    # ntpq -p

    # ntpstat

    因为是内网,一般ntpstat很快就可以同步上。

    7、配置 /etc/security/limits.conf 文件。

    末尾添加

    * soft nproc 100240

    * hard nproc 100240

    * soft nofile 100240

    * hard nofile 100240

    其中,nofile - 打开文件的最大数目,nproc - 进程的最大数目。

    可通过ulimit -n -u命令来查看。(修改完要重新ssh连接服务器才能看到效果)

    安装Hadoop2.7.3+Spark2.10+hbase0.98:

    Hadoop(M:master,S:slave,RM:ResourceManager),

    /hadoop/目录下

    CentOS7-1M

    CentOS7-2

    CentOS7-3(S)

    CentOS7-4(S)

    Zookeeper

    Zookeeper

    Zookeeper

    NameNode

    NameNode

    JournalNode

    JournalNode

    ZKFS

    ZKFC

    NodeMana..

    NodeManager

    RM

     

    DataNode

    DataNode

    JObHistoryS

     

     

     

    Hadoop分布式集群配置(按照上图进行配置)

    首先配置HADOOP_HOME,/etc/profile添加:

    export HADOOP_HOME=/hadoop/hadoop-2.7.3

    export PATH=$PATH:$HADOOP_HOME/bin

    之后source /etc/profile使配置立即生效。

    Hadoop的分布式安装过程非常简单,只需要将Hadoop安装包解压到指定的目录就可以了,接下来对Hadoop的主要配置文件进行配置。

    Hadoop安装包解压到/hadoop 目录下:

    然后针对/hadoop/hadoop-2.7.3/etc/hadoop目录下几个主要文件进行配置: 
    hadoop-env.shyarn-env.sh core-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xmlslaves

    1、配置hadoop-env.sh

    编辑hadoop-env.sh,找到JAVA_HOME指定JDK的安装配置

    $vi hadoop-env.sh

        export JAVA_HOME=/opt/jdk1.8

    2、配置yarn-env.sh

    编辑yarn-env.sh,找到JAVA_HOME指定JDK的安装配置

     $vi yarn-env.sh

       export JAVA_HOME=/opt/jdk1.8

    3、配置core-site.xml

    $vi core-site.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

     

    <configuration>

        <!-- 指定hdfsnameservicecluster -->

        <property>

            <name>fs.defaultFS</name>

            <value>hdfs://cluster</value>

        </property>

        <!-- 指定zookeeper地址-->

        <property>

            <name>ha.zookeeper.quorum</name>

            <value>CentOS7-1:2181,CentOS7-2:2181,CentOS7-3:2181</value>

        </property>

        <property>

            <name>ha.zookeeper.session-timeout.ms</name>

            <value>60000</value>

        </property>

        <!-- 故障检查时间 -->

        <property>

            <name>ha.failover-controller.cli-check.rpc-timeout.ms</name>

            <value>60000</value>

        </property>

        <!-- ipc通讯超时时间 -->

        <property>

            <name>ipc.client.connect.timeout</name>

            <value>20000</value>

        </property>

        <!-- 指定hadoop临时目录 -->

        <property>

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

            <value>file:/hadoop/tmp</value>

        </property>

    </configuration>

    fs.defaultFS:指定hdfsnameservicens1

    hadoop.tmp.dir:指定hadoop临时目录

    ha.zookeeper.quorum:指定zookeeper地址

    4、配置hdfs-site.xml

    Hadoop中的HDFS配置,主要配置备份方式,及NameNodeDataNodeNameSecondary存储地址。 
    $vi hdfs-site.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

     

    <configuration>

        <!--指定hdfsnameservicecluster,需要和core-site.xml中的保持一致 -->

        <property>

            <name>dfs.nameservices</name>

            <value>cluster</value>

        </property>

        <!-- cluster下面有两个NameNode,分别是nn1nn2 -->

        <property>

            <name>dfs.ha.namenodes.cluster</name>

            <value>nn1,nn2</value>

        </property>

        <!-- nn1nn2RPC通信地址 -->

        <property>

            <name>dfs.namenode.rpc-address.cluster.nn1</name>

            <value>CentOS7-1:9000</value>

        </property>

        <property>

            <name>dfs.namenode.rpc-address.cluster.nn2</name>

            <value>CentOS7-2:9000</value>

        </property>

        <!-- nn1nn2http通信地址 -->

        <property>

            <name>dfs.namenode.http-address.cluster.nn1</name>

            <value>CentOS7-1:50070</value>

        </property>

        <property>

            <name>dfs.namenode.http-address.cluster.nn2</name>

            <value>CentOS7-2:50070</value>

        </property>

     

        <property>

            <name>dfs.namenode.servicerpc-address.cluster.nn1</name>

            <value>CentOS7-1:53310</value>

        </property>

        <property>

            <name>dfs.namenode.servicerpc-address.cluster.nn2</name>

            <value>CentOS7-2:53310</value>

        </property>

     

        <!-- 指定NameNode的元数据在JournalNode上的存放位置 -->

        <property>

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

            <value>qjournal://CentOS7-3:8485;CentOS7-4:8485/cluster</value>

        </property>

        <!-- 指定JournalNode在本地磁盘存放数据的位置 -->

        <property>

            <name>dfs.journalnode.edits.dir</name>

            <value>/hadoop/hdfs/journal/data</value>

        </property>

        <!-- 开启NameNode失败自动切换 -->

        <property>

            <name>dfs.ha.automatic-failover.enabled</name>

            <value>true</value>

        </property>

     

        <!-- 配置失败自动切换实现方式 -->

        <property>

            <name>dfs.client.failover.proxy.provider.cluster</name>

            <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

            </value>

        </property>

        <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行 -->

        <property>

            <name>dfs.ha.fencing.methods</name>

            <value>

                sshfence

                shell(/bin/true)

            </value>

        </property>

        <property>

            <name>dfs.ha.fencing.ssh.connect-timeout</name>

            <value>30000</value>

        </property>

     

        <property>

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

            <value>true</value>

        </property>

        <property>

            <name>dfs.permissions.enable</name>

            <value>false</value>

        </property>

        <property>

            <name>dfs.permissions</name>

            <value>false</value>

        </property>

        <property>

            <name>dfs.image.transfer.bandwidthPerSec</name>

            <value>1048576</value>

        </property>

     

        <property>

            <name>dfs.replication</name>

            <value>3</value>

        </property>

        <property>

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

            <value>file:/hadoop/hdfs/name</value>

        </property>

        <property>

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

            <value>file:/hadoop/hdfs/data</value>

        </property>

        <property>

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

            <value>file:/hadoop/hdfs/namesecondary</value>

        </property>

    </configuration>

    dfs.nameservices: 指定hdfsnameservicens1,需要和core-site.xml中的保持一致

    dfs.ha.namenodes.ns1ns1下面有两个NameNode,分别是nn1nn2

    dfs.namenode.rpc-address.ns1.nn1nn1RPC通信地址

    dfs.namenode.http-address.ns1.nn1nn1http通信地址

    dfs.namenode.shared.edits.dir:指定NameNode的元数据在JournalNode上的存放位置

    dfs.journalnode.edits.dir : 指定JournalNode在本地磁盘存放数据的位置

    dfs.ha.automatic-failover.enabled: true是开启NameNode失败自动切换

    dfs.client.failover.proxy.provider.ns1:配置失败自动切换实现方式

    dfs.ha.fencing.ssh.private-key-files:使用sshfence隔离机制时需要ssh免登陆

    5、配置mapred-site.xml

    HadoopMapReduce框架配置,配置MapReduce框架名称 
    $vi mapred-site.xml

    <?xml version="1.0"?>

    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

     

    <configuration>

    <property>

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

            <value>yarn</value>

    </property>

    <!-- configure historyserver -->

    <property>

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

        <value>CentOS7-1:10020</value>

    </property>

    <property>

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

        <value>CentOS7-1:19888</value>

    </property>

    <property>

        <name>mapred.job.reuse.jvm.num.tasks</name>

        <value>-1</value>

    </property>

    <property>

        <name>mapreduce.reduce.shuffle.parallelcopies</name>

        <value>20</value>

    </property>

    </configuration>

    6、配置yarn-site.xml

    $vi yarn-site.xml

    <?xml version="1.0"?>

    <configuration>

    <property>

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

            <value>mapreduce_shuffle</value>

    </property>

    <property>

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

            <value>CentOS7-1</value>

    </property>

    </configuration>

    7、配置slaves节点列表

    对于分布式安装,该文件中需要配置从节点机器名。

    $vi slaves

    CentOS7-3

    CentOS7-4

    到此,整个Hadoop伪分布式安装完毕,接下来就可以格式HDFS文件系统,并启动Hadoop系统。(将以上这些配置文件同步到其他所有服务器

     

     

     

     

    启动集群

    1、启动zookeeper集群

    2、启动journal node(在CentOS7-3CentOS7-4

      ./sbin/hadoop-daemon.sh start journalnode

      执行jps命令,可以查看到JournalNodeJava进程pid

    3、格式化CentOS7-1 :HDFSnamenode)第一次要格式化(这里直接复制会有问题,最好手动输入)

      ./bin/hdfs namenode –format

     4、格式化zk(在CentOS7-1即可)(这里直接输入会有问题,最好手动输入)

    ./bin/hdfs zkfc –formatZK

      格式成功后,zookeeper中可以看到

    [zk: localhost:2181(CONNECTED) 1] ls /hadoop-ha

    [cluster]

     5、启动zkfc来监控NN状态(CentOS7-1CentOS7-2

    ./sbin/hadoop-daemon.sh start zkfc

     6、启动HDFSnamenode)(在CentOS7-1即可)

        ./sbin/start-dfs.sh

     #把NameNode的数据同步到CentOS7-2上(在CentOS7-2执行)

    $ hdfs namenode –bootstrapStandby  #启动mhadoop02上的namenode作为standby

    ./bin/hdfs zkfc –formatZK

    $ sbin/hadoop-daemon.sh start namenode #在CentOS7-2启动namenode

     7、启动YARN

      CentOS7-1上执行如下命令

      启动YARNMR)(在CentOS7-1执行

    ./sbin/start-yarn.sh

    8CentOS7-1上启动 JobHistoryServer

    执行: ./sbin/mr-jobhistory-daemon.sh start historyserver

    测试HA

    正常启动后CentOS7-1namenodeCentOS7-2namenode状态截图如下: 

     

     
    此时在CentOS7-1上执行如下命令关闭namenode

    $ sbin/hadoop-daemon.sh stop namenode

    再次查看CentOS7-2上的namenode,发现自动切换为active
    此时,高可用Hadoop分布式框架就搭好了。

    http://10.79.115.111:19888/   JobHistory

    http://10.79.115.111:8088/   All Applications

    spark-2.1.0-bin-hadoop2.7(在/opt目录下)安装配置:

    CentOS7-1

    CentOS7-2

    CentOS7-3

    CentOS7-4

    Master

     

    Worker(s)

    Worker(s)

    /etc/profile中加入如下变量:

    export SCALA_HOME=/opt/scala-2.11.8

    export PATH=$PATH:$SCALA_HOME/bin

    export SPARK_HOME=/opt/spark-2.1.0-bin-hadoop2.7

    export PATH="$SPARK_HOME/bin:$PATH"

    source /etc/profile

     
    1、首先安装scala-2.11.8 /opt目录下

    2、修改配置文件  

    vim conf/spark-env.sh

    在末尾加上:
    export SCALA_HOME=/opt/scala-2.11.8

    export JAVA_HOME=/opt/jdk1.8

    export SPARK_MASTER_IP=CentOS7-1

    export SPARK_WORKER_MEMORY=1g

    export HADOOP_CONF_DIR=/hadoop/hadoop-2.7.3/etc/hadoop

    vim conf/slaves:

    CentOS7-3

    CentOS7-4

     

    PS:配置文件修改完成后, /usr/local/spark文件夹拷贝到其他节点对应的位置, 并配置好环境变量

    3、spark集群启动, 在主节点(CentOS7-1)中执行:

    ./sbin/start-all.sh

    spark启动后, 通过http://10.79.115.111:8080/可以查看spark当前的运行状态

     hbase-0.98.24-hadoop2(在/opt目录下)集群安装:

    http://abloz.com/hbase/book.html(官方中文文档)

    CentOS7-1

    CentOS7-2

    CentOS7-3

    CentOS7-4

    HMaster

    HMaster备份

    HRegionServ.

    HRegionServer

    /etc/profile中加入如下变量:

    export HBASE_HOME=/opt/hbase-0.98.24-hadoop2

    export PATH=$HBASE_HOME/bin:$PATH

    source /etc/profile

    1、配置hbase集群,要修改3个文件(首先zk集群已经安装好了) 

    vim hbase-env.sh

    export JAVA_HOME=/opt/jdk1.8 

    export HBASE_MANAGES_ZK=false //告诉hbase使用外部的zk

    vim hbase-site.xml

    <?xml version="1.0"?>

    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

    <configuration>

     

        <!-- 指定hbase在HDFS上存储的路径 -->

            <property>

                    <name>hbase.rootdir</name>

                    <value>hdfs://10.79.115.111:9000/hbase</value>

            </property>

            <!-- 指定hbase是分布式的 -->

            <property>

                    <name>hbase.cluster.distributed</name>

                    <value>true</value>

            </property>

            <!-- 指定zk的地址,多个用“,”分割 -->

            <property>

                    <name>hbase.zookeeper.quorum</name>

                    <value>CentOS7-1:2181,CentOS7-2:2181,CentOS7-3:2181</value>

            </property>

     

    </configuration>

    vim regionservers

    CentOS7-3

    CentOS7-4

    之后拷贝hbase到其他服务器

    2、启动所有的hbase

     在主节点上CentOS7-1运行:./start-hbase.sh

    3、 通过浏览器访问hbase管理页面

    http://10.79.115.111:60010

    4、为保证集群的可靠性,要启动多个HMaster

    CentOS7-2运行:./start-hbase.sh

  • 相关阅读:
    自定义标签的作用
    自定义标签处理器类的生命周期
    自定义标签的执行过程
    自定义标签入门案例
    JSTL核心标签库详解
    JSTL标签(核心标准库)
    动作标签
    jsp标签
    EL表达式
    JSP学习案例--,竞猜游戏
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/6439895.html
Copyright © 2020-2023  润新知