zoukankan      html  css  js  c++  java
  • hadoop+yarn+hbase+storm+kafka+spark+zookeeper)高可用集群详细配置

    配置 hadoop+yarn+hbase+storm+kafka+spark+zookeeper 高可用集群,同时安装相关组建:JDK,MySQL,Hive,Flume

    环境介绍

    节点介绍

    • 虚拟机数量:8 台

    • 操作系统版本:CentOS-7-x86_64-Minimal-1611.iso

    每台虚拟机的配置如下:

    虚拟机名称CPU核心数内存(G)硬盘(G)网卡
    hadoop1 2 8 100 2
    hadoop2 2 8 100 2
    hadoop3 2 8 100 2
    hadoop4 2 8 100 2
    hadoop5 2 8 100 2
    hadoop6 2 8 100 2
    hadoop7 2 8 100 2
    hadoop8 2 8 100 2

    集群介绍

    8节点Hadoop+Yarn+Spark+Hbase+Kafka+Storm+ZooKeeper高可用集群搭建:

    集群虚拟机节点
    HadoopHA集群 hadoop1,hadoop2,hadoop3,hadoop4,hadoop5,hadoop6,hadoop7,hadoop8
    YarnHA集群 hadoop1,hadoop2,hadoop3,hadoop4,hadoop5,hadoop6,hadoop7,hadoop8
    ZooKeeper集群 hadoop3,hadoop4,hadoop5
    Hbase集群 hadoop3,hadoop4,hadoop5,hadoop6,hadoop7
    Kafka集群 hadoop6,hadoop7,hadoop8
    Storm集群 hadoop3,hadoop4,hadoop5,hadoop6,hadoop7
    SparkHA集群 hadooop1,hadoop2,hadoop3,hadoop4,hadoop5,hadoop6,hadoop7,hadoop8

    集群详细规划:

    虚拟机名称IP安装软件进程功能
    hadoop1 59.68.29.79 jdk,hadoop,mysql NameNode,ResourceManeger,DFSZKFailoverController(zkfc),master(spark) hadoop的NameNode节点,spark的master节点,yarn的ResourceManeger节点
    hadoop2 10.230.203.11 jdk,hadoop,spark NameNode,ResourceManeger,DFSZKFailoverController(zkfc),worker(spark) hadoop(yarn)的容灾节点,spark的容灾节点
    hadoop3 10.230.203.12 jdk,hadoop,zookeeper,hbase,storm,spark DataNode,NodeManager,journalnode,QuorumPeerMain(zk),HMaster,…(storm),worker(spark) storm,hbase,zookeeper的主节点
    hadoop4 10.230.203.13 jdk,hadoop,zookeeper,hbase,storm,spark DataNode,NodeManager,journalnode,QuorumPeerMain(zk),HRegionServer,…(storm),worker(spark)  
    hadoop5 10.230.203.14 jdk,hadoop,zookeeper,hbase,storm,spark DataNode,NodeManager,journalnode,QuorumPeerMain(zk),HRegionServer,…(storm),worker(spark)  
    hadoop6 10.230.203.15 jdk,hadoop,hbase,storm,kafka,spark DataNode,NodeManager,journalnode,kafka,HRegionServer,…(storm),worker(spark) kafka的主节点
    hadoop7 10.230.203.16 jdk,hadoop,hbase,storm,kafka,spark DataNode,NodeManager,journalnode,kafka,HRegionServer,…(storm),worker(spark)  
    hadoop8 10.230.203.17 jdk,hadoop,kafka,spark DataNode,NodeManager,journalnode,kafka,worker(spark)  

    软件版本介绍

    • JDK版本: jdk-8u65-linux-x64.tar.gz

    • hadoop版本: hadoop-2.7.6.tar.gz

    • zookeeper版本: zookeeper-3.4.12.tar.gz

    • hbase版本: hbase-1.2.6-bin.tar.gz

    • Storm版本: apache-storm-1.1.3.tar.gz

    • kafka版本: kafka_2.11-2.0.0.tgz

    • MySQL版本: mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz

    • hive版本: apache-hive-2.3.3-bin.tar.gz

    • Flume版本: apache-flume-1.8.0-bin.tar.gz

    • Spark版本: spark-2.3.1-bin-hadoop2.7.tgz

    前期准备

    相关配置

    每台主机节点都进行相同设置

    新建用户 centos

    千万注意:不要在root权限下配置集群

    • 新建 centos 用户组
    $> groupadd centos
    
    • 1
    • 新建用户 centos,并将该用户添加到用户组 centos
    $> useradd centos -g centos
    
    • 1
    • 为 centos 用户设置密码
    $> passwd centos
    
    • 1
    添加sudo权限
    • 切换到root用户,修改 /etc/sudoers 文件
    $> nano /etc/sudoers
    
    添加如下语句:
    ## Allow root to run any commands anywhere
    root    ALL=(ALL)	ALL
    centos  ALL=(ALL)	ALL
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    更改用户名
    • 进入 /etc/hostname 下,将原来的内容删除,添加新的用户名
    $> sudo nano /etc/hostname
    
    用户名:hadoop1,hadoop2.....
    
    • 1
    • 2
    • 3
    主机名与IP映射
    • 进入 /etc/hosts,将原来的内容删除,添加主机节点之间的相互映射
    $> sudo nano /etc/hosts
    
    添加内容如下:
    127.0.0.1       localhost 
    59.68.29.79     hadoop1
    10.230.203.11   hadoop2
    10.230.203.12   hadoop3
    10.230.203.13   hadoop4
    10.230.203.14   hadoop5
    10.230.203.15   hadoop6
    10.230.203.16   hadoop7
    10.230.203.17   hadoop8
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    显示当前文件的绝对路径

    命令:pwd。形如 ~ 转换为 /home/centos。方便确定当前文件的路径

    • 进入 /etc/profile 中进行配置
    [centos@hadoop1 ~]$ sudo nano /etc/profile
    
    在末尾添加:
    export PS1='[u@h `pwd`]$'
    
    // source /etc/profile 马上生效
    [centos@hadoop1 /home/centos]$
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    ssh免密登录

    hadoop1 和 hadoop2 是容灾节点(解决单点故障问题),所以这两个主机除了能互相访问之外,还需要登录其他主机节点,可以免密登录

    • 检查是否安装了ssh相关软件包(openssh-server + openssh-clients + openssh)
    [centos@hadoop1 /home/centos]$ yum list installed | grep ssh
    
    • 1
    • 检查是否启动了sshd进程
    [centos@hadoop1 /home/centos]$ ps -Af | grep sshd
    
    • 1
    • 在hadoop1~hadoop8主机节点的 ~(/home/centos) 目录下创建 .ssh 文件目录,并修改权限
    [centos@hadoop1 /home/centos]$ mkdir .ssh
    [centos@hadoop1 /home/centos]$ chmod 700 ~/.ssh
    
    • 1
    • 2
    • 在hadoop1主机上生成秘钥对,追加公钥到~/.ssh/authorized_keys文件中,并修改authorized_keys文件的权限为644(centos系统)
    //生成秘钥对
    [centos@hadoop1 /home/centos]$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    
    //进入 ~/.ssh 文件夹下
    [centos@hadoop1 /home/centos]$ cd ~/.ssh
    
    //追加公钥到~/.ssh/authorized_keys文件中
    [centos@hadoop1 /home/centos/.ssh]$ cat id_rsa.pub >> authorized_keys
    
    // 修改authorized_keys文件的权限为644
    [centos@hadoop1 /home/centos/.ssh]$ chmod 644 authorized_keys
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 将hadoop1的公钥文件id_rsa.pub远程复制给其他7台主机节点,并放置在/home/centos/.ssh/authorized_keys下
    //重名名
    [centos@hadoop2 /home/centos/.ssh]$ mv id_rsa.pub id_rsa_hadoop1.pub
    
    [centos@hadoop1 /home/centos/.ssh]$ scp id_rsa_hadoop1.pub centos@hadoop2:/home/centos/.ssh/authorized_keys
    [centos@hadoop1 /home/centos/.ssh]$ scp id_rsa_hadoop1.pub centos@hadoop3:/home/centos/.ssh/authorized_keys
    [centos@hadoop1 /home/centos/.ssh]$ scp id_rsa_hadoop1.pub centos@hadoop4:/home/centos/.ssh/authorized_keys
    [centos@hadoop1 /home/centos/.ssh]$ scp id_rsa_hadoop1.pub centos@hadoop5:/home/centos/.ssh/authorized_keys
    [centos@hadoop1 /home/centos/.ssh]$ scp id_rsa_hadoop1.pub centos@hadoop6:/home/centos/.ssh/authorized_keys
    [centos@hadoop1 /home/centos/.ssh]$ scp id_rsa_hadoop1.pub centos@hadoop7:/home/centos/.ssh/authorized_keys
    [centos@hadoop1 /home/centos/.ssh]$ scp id_rsa_hadoop1.pub centos@hadoop8:/home/centos/.ssh/authorized_keys
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 在hadoop2主机上生成秘钥对。为了与hadoop1的公钥区分,重命名为 id_rsa_hadoop2.pub。追加公钥到~/.ssh/authorized_keys文件中,并分发给其他7台主机节点
    //生成秘钥对
    [centos@hadoop2 /home/centos]$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    
    //重名名
    [centos@hadoop2 /home/centos/.ssh]$ mv id_rsa.pub id_rsa_hadoop2.pub
    
    //追加公钥到~/.ssh/authorized_keys文件中
    [centos@hadoop1 /home/centos/.ssh]$ cat id_rsa_hadoop2.pub >> authorized_keys
    
    //将authorized_keys分发给其他节点
    [centos@hadoop1 /home/centos/.ssh]$ scp authorized_keys centos@hadoop:/home/centos/.ssh/
    
    ... 分发给其他节点
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    关闭防火墙

    为了保证集群正常启动,先要关闭各台主机的防火墙,一些命令如下:

    [cnetos 6.5之前的版本]
    $>sudo service firewalld stop		//停止服务
    $>sudo service firewalld start		//启动服务
    $>sudo service firewalld status		//查看状态
    
    [centos7]
    $>sudo systemctl enable firewalld.service	//"开机启动"启用
    $>sudo systemctl disable firewalld.service	//"开机自启"禁用
    $>sudo systemctl start firewalld.service	//启动防火墙
    $>sudo systemctl stop firewalld.service		//停止防火墙
    $>sudo systemctl status firewalld.service	//查看防火墙状态
    
    [开机自启]
    $>sudo chkconfig firewalld	on				//"开启自启"启用
    $>sudo chkconfig firewalld	off				//"开启自启"禁用
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    两个批处理脚本

    提示:为了全局可用,脚本都放在 /usr/local/bin 目录下。只在hadoop1和hadoop2节点配置

    //以本地用户身份创建xcall.sh
    $>touch ~/xcall.sh       //centos
    
    //将其复制到 /usr/local/bin 目录下
    $>sudo mv xcall.sh /usr/local/bin
    
    //修改权限
    $>sudo chmod a+x xcall.sh
    
    //添加脚本
    $>sudo nano xcall.sh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    批分发指令脚本(xcall.sh)
    #!/bin/bash
    
    params=$@
    i=1
    for (( i=1 ; i <= 8 ; i = $i + 1 )) ; do
        echo ============= s$i $params =============
        ssh hadoop$i "$params"
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    批同步脚本(xsync.sh):类似于 scp 指令
    #!/bin/bash
    
    if [[ $# -lt 1 ]] ; then echo no params ; exit ; fi
    
    p=$1
    #echo p=$p
    dir=`dirname $p`
    #echo dir=$dir
    filename=`basename $p`
    #echo filename=$filename
    cd $dir
    fullpath=`pwd -P .`
    #echo fullpath=$fullpath
    
    user=`whoami`
    for (( i = 1 ; i <= 8 ; i = $i + 1 )) ; do
       echo ======= hadoop$i =======
       rsync -lr $p ${user}@hadoop$i:$fullpath
    done ;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    集群环境搭建

    安装JDK

    • 准备JDK:jdk-8u65-linux-x64.tar.gz,将其上传到主机hadoop1的 /home/centos/localsoft 目录下,该目录用于存放所有需要安装的软件安装包

    • 在根目录下(/)新建一个 soft 文件夹,并将该文件夹的用户组权限和用户权限改为 centos,该文件夹下为所有需要安装的软件

    //创建soft文件夹
    [centos@hadoop1 /home/centos]$ sudo mkdir /soft
    
    //修改权限(centosmin0是自己的本机用户名)
    [centos@hadoop1 /home/centos]$ sudo chown centos:centos /soft
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 解压 jdk-8u65-linux-x64.tar.gz 到 /soft 目录下,并创建符号链接
    // 从 /home/centos/localsoft 下解压到 /soft
    [centos@hadoop1 /home/centos/localsoft]$ tar -xzvf jdk-8u65-linux-x64.tar.gz -C /soft
    
    // 创建符号链接
    [centos@hadoop1 /soft]$ ln -s /soft/jdk1.8.0_65 jdk
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 在 /etc/profile 文件中配置环境变量,同时 source /etc/profile,使其立即生效
    // 进入profile
    [centos@hadoop1 /home/centos]$ sudo nano /etc/profile
    
    // 环境变量
    # jdk
    export JAVA_HOME=/soft/jdk
    export PATH=$PATH:$JAVA_HOME/bin
    
    // source 立即生效
    [centos@hadoop1 /home/centos]$ source /etc/profile
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 检验是否安装配置成功
    [centos@hadoop1 /home/centos]$ java -version
    
    // 显示如下
    java version "1.8.0_65"
    Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
    Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 按照以上步骤配置其他主句(hadoop2~hadoop8):可以使用批分发指令(xsync.sh分发文件给其他7台主机节点)

    Hadoop安装配置(手动HA搭建)

    1. hadoop安装配置
    • 准备hadoop:hadoop-2.7.6.tar.gz,解压到 /soft 目录下,创建符号链接
    // 从 /home/centos/localsoft 下解压到 /soft
    [centos@hadoop1 /home/centos/localsoft]$ tar -xzvf hadoop-2.7.6.tar.gz -C /soft
    
    // 创建符号链接
    [centos@hadoop1 /soft]$ ln -s /soft/hadoop-2.7.6 hadoop
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 在 /etc/profile 下配置环境变量,source /etc/profile 立即生效,使用 hadoop version 检测是否安装成功
    // 进入profile
    [centos@hadoop1 /home/centos]$ sudo nano /etc/profile
    
    // 环境变量
    # hadoop
    export HADOOP_HOME=/soft/hadoop
    export PATH=$PATH:$HADOOP_HOME/bin/:$HADOOP_HOME/sbin
    
    // source 立即生效
    [centos@hadoop1 /home/centos]$ source /etc/profilea
    
    // 检测是否安装成功
    [centos@hadoop1 /home/centos]$ hadoop version
    
    显示如下:
    Hadoop 2.7.6
    Subversion https://shv@git-wip-us.apache.org/repos/asf/hadoop.git -r 085099c66cf28be31604560c376fa282e69282b8
    Compiled by kshvachk on 2018-04-18T01:33Z
    Compiled with protoc 2.5.0
    From source with checksum 71e2695531cb3360ab74598755d036
    This command was run using /soft/hadoop-2.7.6/share/hadoop/common/hadoop-common-2.7.6.jar
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    提示: 现在的操作在hadoop1节点上,先不用在其他节点进行安装配置,等后续配置结束后再一起将配置传给其他节点,能大大节省工作量。

    2. hadoop手动NameNode HA搭建

    基于hadoop的原生NameNode HA搭建,后面会与zookeeper集群进行整合,实现自动容灾(Yarn+NameNode)

    • 进入 /soft/hadoop/etc 目录,复制 hadoop 文件为:full,ha,pesudo,并创建指向ha的符号链接hadoop
    [centos@hadoop1 /soft/hadoop/etc]$ cp hadoop ha
    [centos@hadoop1 /soft/hadoop/etc]$ cp hadoop full
    [centos@hadoop1 /soft/hadoop/etc]$ cp hadoop pesudo
    
    // 创建符号链接
    [centos@hadoop1 /soft/hadoop/etc]$ ln -s /soft/hadoop/etc/ha hadoop
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 进入 ha 目录下配置4个文件:core-site.xml;hdfs-site.xml;mapred-site.xml;yarn-site.xml

    [core-site.xml]

    <configuration>
         <property>
    	   <name>fs.defaultFS</name>
    	   <value>hdfs://mycluster</value>
         </property>
         <!--- 配置新的本地目录 -->
         <property>
    	   <name>hadoop.tmp.dir</name>
    	   <value>/home/centos/hadoop</value>
         </property>
    
         <property>
            <name>ipc.client.connect.max.retries</name>
    	   <value>20</value>
         </property>
    
        <property>
    	   <name>ipc.client.connect.retry.interval</name>
     	   <value>5000</value>
         </property>
    </configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    [hdfs-site.xml]

    <configuration>
    	<!-- 配置nameservice -->
    <property>
    	<name>dfs.nameservices</name>
    	<value>mycluster</value>
    </property>
    
    <!-- myucluster下的名称节点两个id -->
    <property>
    	<name>dfs.ha.namenodes.mycluster</name>
    	<value>nn1,nn2</value>
    </property>
    
    <!-- 配置每个nn的rpc地址 -->
    <property>
    	<name>dfs.namenode.rpc-address.mycluster.nn1</name>
    	<value>hadoop1:8020</value>
    </property>
    <property>
    	<name>dfs.namenode.rpc-address.mycluster.nn2</name>
    	<value>hadoop2:8020</value>
    </property>
    
    <!-- 配置webui端口 -->
    <property>
    	<name>dfs.namenode.http-address.mycluster.nn1</name>
    	<value>hadoop1:50070</value>
    </property>
    <property>
    	<name>dfs.namenode.http-address.mycluster.nn2</name>
    	<value>hadoop2:50070</value>
    </property>
    
    <!-- 名称节点共享编辑目录 -->
    <property>
    	<name>dfs.namenode.shared.edits.dir</name>
    	<value>qjournal://hadoop3:8485;hadoop4:8485;hadoop5:8485;hadoop6:8485;hadoop7:8485;hadoop8:8485/mycluster</value>
    </property>
    
    <!-- java类,client使用它判断哪个节点是激活态 -->
    <property>
    	<name>dfs.client.failover.proxy.provider.mycluster</name>
    	<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    
    <!-- 脚本列表或者java类,在容灾情况下保护激活态的nn -->
    <property>
    	<name>dfs.ha.fencing.methods</name>
    	<value>sshfence</value>
    </property>
    <property>
    	<name>dfs.ha.fencing.ssh.private-key-files</name>
    	<value>/home/centos/.ssh/id_rsa</value>
    </property>
    	
    <!-- 配置JN存放edit的本地路径 -->
    <property>
    	<name>dfs.journalnode.edits.dir</name>
    	<value>/home/centos/hadoop/journal</value>
    </property>
    </configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61

    [mapred-site.xml]

    <configuration>
    	<property>
    		<name>mapreduce.framework.name</name>
    		<value>yarn</value>
    	</property>
    </configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    [yarn-site.xml]

    <configuration>
    	<property>
    		<name>yarn.resourcemanager.hostname</name>
    		<value>hadoop1</value>
    	</property>
    	<property>
    		<name>yarn.nodemanager.aux-services</name>
    		<value>mapreduce_shuffle</value>
    	</property>
    </configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 配置 slaves 文件和修改 hadoop-env.sh中的一个细节
    // 配置 DataNode 从属节点
    [centos@hadoop1 /soft/hadoop/etc/ha]$ nano slaves
    
    添加如下:
    hadoop3
    hadoop4
    hadoop5
    hadoop6
    hadoop7
    hadoop8
    
    // 修改hadoop-env.sh中的一个细节
    [centos@hadoop1 /soft/hadoop/etc/ha]$ nano hadoop-env.sh
    
    将 export JAVA_HOME={JAVA_HOME} 改为 export JAVA_HOME=/soft/jdk
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 将上面所有的配置都分发给其他7台主机节点
    // 批分发
    [centos@hadoop1 /soft]$ xsync hadoop-2.7.6
    
    // 将符号链接也分发给其他主机节点
    [centos@hadoop1 /soft]$ rsync -lr hadoop centos:/soft/
    
    • 1
    • 2
    • 3
    • 4
    • 5

    注意: /etc/profile 配置文件还需每台主机单独配置,配置内容与hadoop1一样

    // 环境变量
    # hadoop
    export HADOOP_HOME=/soft/hadoop
    export PATH=$PATH:$HADOOP_HOME/bin/:$HADOOP_HOME/sbin
    
    • 1
    • 2
    • 3
    • 4
    3. 启动hadoop HA集群进行测试
    • 在jn节点(每个数据节点就是一个jn节点)启动jn进程(hadoop3, hadoop4, hadoop5,hadoop6,hadoop7,hadoop8)
    $>hadoop-daemon.sh start journalnode
    
    • 1
    • 分别在hadoop1和hadoop2节点上进行数据格式化(两个节点都需要格式化,不然NameNode进程无法启动)
    // hadoop1 节点
    [centos@hadoop1 /home/centos]$ hadoop namenode -format
    
    // hadoop2 节点
    [centos@hadoop2 /home/centos]$ hadoop namenode -format
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 在一个NN上执行以下命令,完成edit日志到jn节点的传输
    [centos@hadoop1 /home/centos]$ hdfs namenode -initializeSharedEdits
    
    • 1
    • 启动所有节点
    [hadoop1]
    $>hadoop-daemon.sh start namenode		//启动名称节点
    $>hadoop-daemons.sh start datanode		//启动所有数据节点
    
    [hadoop2]
    $>hadoop-daemon.sh start namenode		//启动名称节点
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    HA 手动管理命令:

    $>hdfs haadmin -transitionToActive nn1				//切成激活态
    $>hdfs haadmin -transitionToStandby nn1				//切成待命态
    $>hdfs haadmin -transitionToActive --forceactive nn2//强行激活
    $>hdfs haadmin -failover nn1 nn2					//模拟容灾演示,从nn1切换到nn2
    
    • 1
    • 2
    • 3
    • 4
    • 在webui下查看状态:hadoop1:50070;hadoop2:50070

    注意!!!

    • 在进行格式化之前一定要先启动数据节点上的journalnode进程
    • 两台容灾节点(NN1,NN2)都需要进行格式化

    zookeeper安装配置(Yarn+NameNode HA)

    zookeeper集群节点为:hadoop3,hadoop4,hadoop5。先在hadoop3上进行安装配置,然后分发给hadoop4和hadoop5节点。

    1. zookeeper安装配置
    • 准备安装包:zookeeper-3.4.12.tar.gz,解压到 /soft 目录下,添加符号链接
    // 解压
    [centos@hadoop3 /home/centos/localsoft]$ tar -xzvf zookeeper-3.4.12.tar.gz -C /soft/
    
    // 创建符号链接
    [centos@hadoop3 /soft]$ln -s /soft/zookeeper-3.4.12 zk
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 在 /etc/profile 中配置环境变量,source /etc/profile 立即生效
    [centos@hadoop3 /home/centos]$sudo nano /etc/profile
    
    //导入环境变量
    export ZK_HOME=/soft/zk
    export PATH=$PATH:$ZK_HOME/bin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    2. zookeeper完全分布式集群
    • 进入 /soft/zk/conf 目录下,配置zk
    // 复制
    [centos@hadoop3 /soft/zk/conf]$cp zoo_sample.cfg zoo.cfg
    
    // 配置
    [centos@hadoop3 /soft/zk/conf]$nano zoo.cfg
    
    // 配置如下:
    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/home/centos/zookeeper //配置临时文件路径
    clientPort=2181
    
    server.1=hadoop3:2888:3888
    server.2=hadoop4:2888:3888
    server.3=hadoop5:2888:3888
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 分发上面所有的配置给另外两个节点(从hadoop3分发到hadoop4和hadoop5),分别配置两个节点的 /etc/profile 环境
    // 分发给hadoop4
    [centos@hadoop3 /soft]$scp -r zookeeper-3.4.12 centos@hadoop4:/soft/
    // 分发给hadoop5
    [centos@hadoop3 /soft]$scp -r zookeeper-3.4.12 centos@hadoop5:/soft/
    
    // 分发符号引用给hadoop4
    [centos@hadoop3 /soft]$rsync -lr zk centos@hadoop4:/soft/
    // 分发符号引用给hadoop5
    [centos@hadoop3 /soft]$rsync -lr zk centos@hadoop5:/soft/
    
    //导入环境变量
    export ZK_HOME=/soft/zk
    export PATH=$PATH:$ZK_HOME/bin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 在每台主机的/home/centos/zookeeper中添加myid,内容分别是1,2,3
    [hadoop3]
    [centos@hadoop3 /home/centos]$ echo 1 > /home/centos/zookeeper/myid
    
    [hadoop4]
    [centos@hadoop4 /home/centos]$ echo 2 > /home/centos/zookeeper/myid
    
    [hadoop5]
    [centos@hadoop5 /home/centos]$ echo 3 > /home/centos/zookeeper/myid
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 启动服务器集群,查看每台服务器的状态
    //启动服务器
    $> zkServer.sh start
    //关闭
    $> zkServer.sh stop
    
    //查看状态
    $>zkServer.sh status
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    zookeeper基本命令:

    $>zkCli.sh -server hadoop3:2181	//进入zk命令行
    $zk]help						//查看帮助
    $zk]quit						//退出
    $zk]create /a tom				//
    $zk]get /a						//查看数据
    $zk]ls /						//列出节点
    $zk]set /a tom					//设置数据
    $zk]delete /a					//删除一个节点
    $zk]rmr /a						//递归删除所有节点。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    3. hadoop+zk 高可用配置
    1. 准备阶段
    • 停掉所有的hadoop进程(保证没有任何进程在运行)
    [centos@hadoop1 /home/centos]$
    
    • 1
    • 删除所有节点的日志和本地数据
    //  删除所有节点的日志
    [centos@hadoop1 /home/centos]$ xcall.sh "rm -rf /soft/hadoop/logs/*" 
    
    //  删除所有节点的本地数据
    [centos@hadoop1 /home/centos]$ xcall.sh "rm -rf /home/centos/hadoop/*" 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 登录每台JN节点主机,启动JN进程(hadoop3, hadoop4, hadoop5,hadoop6,hadoop7,hadoop8)
    $> hadoop-daemon.sh start journalnode
    
    • 1
    • 登录其中一个名称节点(NN),格式化文件系统(登录hadoop1)
    [centos@hadoop1 /home/centos]$ hadoop namenode -format
    
    • 1
    • 复制hadoop1主机 /home/centos/hadoop/* 的元数据到hadoop2主机
    [centos@hadoop1 /home/centos]$ scp -r ~/hadoop/* centos@hadoop2:/home/centos/hadoop
    
    • 1
    • 在未格式化的NN(hadoop2)节点上做standby引导

      • 启动hadoop1主机的名称节点
      [centos@hadoop1 /home/centos]$ hadoop-daemon.sh start namenode
      
      • 1
      • 登录到hadoop2节点,做standby引导(选择:N)
      [centos@hadoop2 /home/centos]$ hdfs namenode -bootstrapStandby
      
      • 1
      • 登录hadoop1,将hadoop1的edit日志初始化到JN节点(选择:Y)
      [centos@hadoop1 /home/centos]$ hdfs namenode -initializeSharedEdits
      
      • 1

      注意: 假如出现被锁住无法引导的情况,需要删除 /home/centos/hadoop/dfs/name 下的 in_use.lock 文件

    • 启动所有数据节点

    [centos@hadoop1 /home/centos]$ hadoop-daemons.sh start datanode
    
    • 1
    • 登录到hadoop2主机,启动名称节点(NN)
    [centos@hadoop1 /home/centos]$ hadoop-daemon.sh start namenode
    
    • 1
    2. NameNode高可用配置
    • 停止所有进程
    [centos@hadoop1 /home/centos]$ stop-all.sh 
    
    • 1
    • 配置hdfs-site.xml和core-site.xml,分发两个文件给所有主机
    //配置core-site.xml,指定zk的连接地址
    [core-site.xml]
    <property>
    	<name>ha.zookeeper.quorum</name>
    	<value>hadoop3:2181,hadoop4:2181,hadoop5:2181</value>
    </property>
    
    //配置hdfs-site.xml,启用自动容灾
    [hdfs-site.xml]
    <property>
    	<name>dfs.ha.automatic-failover.enabled</name>
    	<value>true</value>
    </property>
    
    //分发文件到其他主机
    [centos@hadoop1 /soft/hadoop/etc/ha]$ xsync.sh hdfs-site.xml
    [centos@hadoop1 /soft/hadoop/etc/ha]$ xsync.sh core-site.xml
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 开启ZooKeeper集群(hadoop3, hadoop4, hadoop5)
    $> zkServer.sh start
    
    • 1
    • 登录其中的一台NN(hadoop1),在ZK中初始化HA状态,进入zk客户端查看
    [centos@hadoop1 /home/centos]$ hdfs zkfc -formatZK
    
    // 进入zk客户端
    [centos@hadoop3 /home/centos]$ zkCli.sh
    
    • 1
    • 2
    • 3
    • 4
    • 启动hdfs进程
    [centos@hadoop1 /home/centos]$ start-dfs.sh
    
    • 1
    3. Yarn高可用配置

    yarn的高可用配置相对简单

    • 配置 yarn-site.xml,分发给其他主机节点
    <property>
    	<name>yarn.resourcemanager.ha.enabled</name>
    	<value>true</value>
    </property>
    <property>
    	<name>yarn.resourcemanager.cluster-id</name>
    	<value>cluster1</value>
    </property>
    <property>
    	<name>yarn.resourcemanager.ha.rm-ids</name>
    	<value>rm1,rm2</value>
    </property>
    <property>
    	<name>yarn.resourcemanager.hostname.rm1</name>
    	<value>hadoop1</value>
    </property>
    <property>
    	<name>yarn.resourcemanager.hostname.rm2</name>
    	<value>hadoop2</value>
    </property>
    <property>
    	<name>yarn.resourcemanager.webapp.address.rm1</name>
    	<value>hadoop1:8088</value>
    </property>
    <property>
    	<name>yarn.resourcemanager.webapp.address.rm2</name>
    	<value>hadoop2:8088</value>
    </property>
    <property>
    	<name>yarn.resourcemanager.zk-address</name>
    	<value>hadoop3:2181,hadoop4:2181,hadoop5:2181</value>
    </property>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 启动yarn进程(hadoop1)。hadoop没有启动两个resourcemanager,需要手动启动另外一个。
    [hadoop1]
    [centos@hadoop1 /home/centos]$ start-yarn.sh
    
    [hadoop2]
    [centos@hadoop2 /home/centos]$ yarn-daemon.sh start resourcemanager
    
    //管理命令
    //查看状态
    $>yarn rmadmin -getServiceState rm1
    //切换状态到standby
    $>yarn rmadmin -transitionToStandby rm1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 查看 hadoop1 和 hadoop2 的资源管理器
    hadoop1:8088
    hadoop2:8088
    
    • 1
    • 2

    Hbase安装配置(HA)

    5台主机节点:hadoop3,hadoop4,hadoop5,hadoop6,hadoop7。hadoop3是master节点,其余节点为slave节点。

    1. ssh配置

    hbase是具有从属关系的集群,所以hadoop3需要能够免密登录到其他四个节点主机,需要进行ssh免密登录配置

    • 在hadoop3上生成秘钥对,重命名公钥,并将公钥添加到authorized_keys
    // 生成秘钥对
    [centos@hadoop3 /home/centos]$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa 
    
    // 重命名
    [centos@hadoop3 /home/centos/.ssh]$ mv id_rsa.pub id_rsa_hadoop3.pub
    
    // 添加公钥到authorized_keys 
    [centos@hadoop3 /home/centos/.ssh]$ cat id_rsa_hadoop3.pub >> authorized_keys
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 将公钥发给其他四个节点,并将公钥添加到authorized_keys中
    [centos@hadoop3 /home/centos/.ssh]$scp id_rsa_hadoop3.pub centos@hadoop4:~/.ssh/
    [centos@hadoop3 /home/centos/.ssh]$scp id_rsa_hadoop3.pub centos@hadoop5:~/.ssh/
    [centos@hadoop3 /home/centos/.ssh]$scp id_rsa_hadoop3.pub centos@hadoop6:~/.ssh/
    [centos@hadoop3 /home/centos/.ssh]$scp id_rsa_hadoop3.pub centos@hadoop7:~/.ssh/
    
    // 添加公钥到authorized_keys中
    $> cat id_rsa_hadoop3.pub >> authorized_keys
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    2. hbase 安装配置
    • 准备hbase安装包:hbase-1.2.6-bin.tar.gz,解压到 /soft 目录下,创建符号链接
    [centos@hadoop3 /home/centos]$ tar -xzvf hbase-1.2.6-bin.tar.gz -C /soft/
    
    // 创建符号链接
    [centos@hadoop3 /soft]$ln -s /soft/hbase-1.2.6 hbase
    
    • 1
    • 2
    • 3
    • 4
    • 在 /etc/profile 线配置环境变量,source /etc/profile 立即生效
    [centos@hadoop3 /home/centos]$ sudo nano /etc/profile
    
    导入环境变量:
    export HBASE_HOME=/soft/hbase
    export PATH=$PATH:$HBASE_HOME/bin
    
    // hadoop version 
    HBase 1.2.6
    Source code repository file:///home/busbey/projects/hbase/hbase-assembly/target/hbase-1.2.6 revision=Unknown
    Compiled by busbey on Mon May 29 02:25:32 CDT 2017
    From source with checksum 7e8ce83a648e252758e9dae1fbe779c9
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    3. hbase高可用集群(整合zookeeper)
    • 配置 /soft/hbase/conf/hbase-env.sh和 /soft/hbase/conf/regionservers
    // 配置hbase-env.sh
    [centos@hadoop3 /soft/hbase/conf]$ nano hbase-env.sh
    
    //找到如下配置进行修改
    export JAVA_HOME=/soft/jdk
    export HBASE_MANAGES_ZK=false
    export HBASE_PID_DIR=/home/centos/hbase/pids
    export HBASE_CLASSPATH=$HBASE_CLASSPATH:/soft/hadoop/etc/hadoop
    
    // 配置 regionservers
    [centos@hadoop3 /soft/hbase/conf]$ nano regionservers
    
    hadoop4
    hadoop5
    hadoop6
    hadoop7
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 配置 /soft/hbase/conf/hbase-site.xml 文件
    [centos@hadoop3 /soft/hbase/conf]$nano hbase-site.xml
    
    [hbase-site.xml]
    
    <!-- 使用完全分布式 -->
    <property>
    	<name>hbase.cluster.distributed</name>
    	<value>true</value>
    </property>
    <!-- 指定hbase数据在hdfs上的存放路径 -->
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://mycluster/hbase</value>
    </property>
    <!-- 配置zk地址 -->
    <property>
    	<name>hbase.zookeeper.quorum</name>
    	<value>hadoop3:2181,hadoop4:2181,hadoop5:2181</value>
    </property>
    <!-- zk的本地目录 -->
    <property>
    	<name>hbase.zookeeper.property.dataDir</name>
    	<value>/home/centos/zookeeper</value>
    </property>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 在 /soft/hbase/conf/ 目录下创建到hadoop的hdfs-site.xml符号连接
    [centos@hadoop3 /soft/hbase/conf]$ ln -s /soft/hadoop/etc/hadoop/hdfs-site.xml /soft/hbase/conf/hdfs-site.xml
    
    • 1
    • 将上面的所有配置都发给其他节点(hadoop4,hadoop5,hadoop6,hadoop7)
    // 解压文件
    [centos@hadoop3 /soft]$ scp -r hbase-1.2.6 centos@hadoop4:/soft/
    [centos@hadoop3 /soft]$ scp -r hbase-1.2.6 centos@hadoop5:/soft/
    [centos@hadoop3 /soft]$ scp -r hbase-1.2.6 centos@hadoop6:/soft/
    [centos@hadoop3 /soft]$ scp -r hbase-1.2.6 centos@hadoop7:/soft/
    
    // 分发符号链接
    [centos@hadoop3 /soft]$ rsync -lr hbase centos@hadoop4:/soft/
    [centos@hadoop3 /soft]$ rsync -lr hbase centos@hadoop5:/soft/
    [centos@hadoop3 /soft]$ rsync -lr hbase centos@hadoop6:/soft/
    [centos@hadoop3 /soft]$ rsync -lr hbase centos@hadoop7:/soft/
    
    // 在这4台主机节点的 /etc/profile 中配置环境变量,source /etc/profile 立即生效
    export HBASE_HOME=/soft/hbase
    export PATH=$PATH:$HBASE_HOME/bin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 启动hbase集群

    注意: 在启动hbase集群前,应该保证hadoop集群启动,并且NameNode节点为激活状态。否则会报异常:Operation category READ is not supported in state standby

    [centos@hadoop3 /home/centos]$ start-hbase.sh
    
    • 1

    hbase基本命令

    //启动HBase集群:
    $> start-hbase.sh
    
    //单独启动一个HMaster进程:
    $> hbase-daemon.sh start master
    
    //单独停止一个HMaster进程:
    $> hbase-daemon.sh stop master
    
    //单独启动一个HRegionServer进程:
    $> hbase-daemon.sh start regionserver
    
    //单独停止一个HRegionServer进程:
    $> hbase-daemon.sh stop regionserver
    
    //进入hbase shell
    $> hbase shell
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 在webui中查看:hadoop3:16010

    Kafka集群安装配置

    在hadoop6,hadoop7,hadoop8三台主机上构建kafka集群

    • 准备kafka安装包:kafka_2.11-2.0.0.tgz,解压到 /soft 目录下,并创建符号链接
    // 解压
    [centos@hadoop6 /home/centos/localsoft]$tar -xzvf kafka_2.11-2.0.0.tgz -C /soft/
    
    // 创建符号链接
    [centos@hadoop6 /soft]$ln -s /soft/kafka_2.11-2.0.0 kafka
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 在 /etc/profile 中配置环境变量,source /etc/profile 立即生效
    [centos@hadoop6 /soft]$sudo nano /etc/profile
    
    导入环境变量
    export KAFKA_HOME=/soft/kafka
    export PATH=$PATH:$KAFKA_HOME/bin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 配置kafka集群,主机:hadoop6,hadoop7,hadoop8。在 /soft/kafka/config/server.properties 文件中进行如下修改
    [centos@hadoop6 /soft/kafka/config]$nano server.properties
    
    # The id of the broker. This must be set to a unique integer for each broker.
    broker.id=6 // hadoop6,hadoop7,hadoop8的broker_id分别为 6,7,8
    
    listeners=PLAINTEXT://:9092
    
    # A comma separated list of directories under which to store log files
    log.dirs=/home/centos/kafka/logs
    
    # Zookeeper connection string (see zookeeper docs for details).
    # This is a comma separated host:port pairs, each corresponding to a zk
    # server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
    # You can also append an optional chroot string to the urls to specify the
    # root directory for all kafka znodes.
    zookeeper.connect=hadoop6:2181,hadoop7:2181,hadoop8:2181
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 把上面的配置分发其他两台主机节点,修改 /soft/kafka/config/server.properties 中的 broker_id 号,在 /etc/profile 下配置环境变量,source /etc/profile 立即生效
    // 发送解压文件
    [centos@hadoop6 /soft]$scp -r kafka_2.11-2.0.0 centos@hadoop7:/soft/
    [centos@hadoop6 /soft]$scp -r kafka_2.11-2.0.0 centos@hadoop8:/soft/
    
    // 发送符号链接
    [centos@hadoop6 /soft]$rsync -lr kafka centos@hadoop7:/soft/
    [centos@hadoop6 /soft]$rsync -lr kafka centos@hadoop8:/soft/
    
    导入环境变量
    export KAFKA_HOME=/soft/kafka
    export PATH=$PATH:$KAFKA_HOME/bin
    
    分别修改broker_id
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 启动kafka服务器

      • 先启动ZooKeeper:zkServer.sh start

      • 启动kafka集群:hadoop3,hadoop4,hadoop5

      // 守护进程
      [centos@hadoop6 /home/centos]$ kafka-server-start.sh /soft/kafka/config/server.properties &
      
      • 1
      • 2
      • 验证kafka集群服务器是否启动
      [centos@hadoop6 /home/centos]$ netstat -anop | grep 9092
      
      • 1

    Storm集群安装配置

    在hadoop3,hadoop4,hadoop5,hadoop6,hadoop7 五台主机上构建storm集群

    • 准备storm安装包:apache-storm-1.1.3.tar.gz,解压到 /soft 目录下,并创建符号链接
    // 解压
    [centos@hadoop3 /home/centos/localsoft]$ tar -xzvf apache-storm-1.1.3.tar.gz -C /soft/
    
    // 创建符号链接
    [centos@hadoop3 /soft]$ ln -s /soft/apache-storm-1.1.3 storm
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 在 /etc/profile 中配置环境变量,source /etc/profile 立即生效
    [centos@hadoop3 /soft]$ sudo nano /etc/profile
    
    导入环境变量
    export STORM_HOME=/soft/storm
    export PATH=$PATH:$STORM_HOME/bin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 进入 /soft/storm/conf 目录下,对 storm.yaml 进行如下配置(主机:hadoop3)
    [centos@hadoop3 /soft/storm/conf]$ nano storm.yaml
    
    storm.zookeeper.servers:
         - "hadoop3"
         - "hadoop4"
         - "hadoop5"
     
     nimbus.seeds: ["hadoop3"]
    
     storm.local.dir: "/home/centos/storm"
    
     storm.zookeeper.port: 2181
    
     ui.host: 0.0.0.0
     ui.port: 8080
    
     supervisor.slots/ports:
        - 6700
        - 6701
        - 6702
        - 6703
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 将上面的配置分发给其他节点(hadoop4,hadoop5,hadoop6,hadoop7),在 /etc/profile 中配置环境变量,source /etc/profile 立即生效
    // 分发解压文件
    [centos@hadoop3 /soft]$scp -r apache-storm-1.1.3 centos@hadoop4:/soft/
    [centos@hadoop3 /soft]$scp -r apache-storm-1.1.3 centos@hadoop5:/soft/
    [centos@hadoop3 /soft]$scp -r apache-storm-1.1.3 centos@hadoop6:/soft/
    [centos@hadoop3 /soft]$scp -r apache-storm-1.1.3 centos@hadoop7:/soft/
    
    // 分发符号链接
    [centos@hadoop3 /soft]$rsync -lr storm centos@hadoop4:/soft/
    [centos@hadoop3 /soft]$rsync -lr storm centos@hadoop5:/soft/
    [centos@hadoop3 /soft]$rsync -lr storm centos@hadoop6:/soft/
    [centos@hadoop3 /soft]$rsync -lr storm centos@hadoop7:/soft/
    
    导入环境变量
    export STORM_HOME=/soft/storm
    export PATH=$PATH:$STORM_HOME/bin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 启动集群

      • 启动ZooKeeper集群:zkServer.sh start(hadoop3,hadoop4,hadoop5)

      • 启动主机hadoop3的 nimbus 进程

      [centos@hadoop3 /home/centos]$ storm nimbus &
      
      • 1
      • 启动hadoop4 ~ hadoop7 的 supervisor 进程
      [centos@hadoop3 /home/centos]$ storm supervisor &
      
      • 1
      • 启动hadoop3的webui进程
      [centos@hadoop3 /home/centos]$ storm ui &
      
      • 1
    • 在webui中查看:hadoop3:8080

    Spark集群安装配置

    在8个节点上配置spark集群,其中hadoop1是master节点,hadoop2~ hadoop8是worker节点

    1. spark安装配置
    • 准备spark安装包:spark-2.3.1-bin-hadoop2.7.tgz,解压到 /soft/ 目录,并创建符号链接:
    // 解压
    [centos@hadoop1 /home/centos/localsoft]$tar -xzvf spark-2.3.1-bin-hadoop2.7.tgz -C /soft/
    
    // 创建符号链接
    [centos@hadoop1 /soft]$ln -s /soft/spark-2.3.1-bin-hadoop2.7 spark
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 在 /etc/profile 下配置环境变量,source /etc/profile 立即生效
    [centos@hadoop1 /home/centos]$sudo nano /etc/profile
    
    # spark
    export SPARK_HOME=/soft/spark
    export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 验证:spark-shell,看等否进入spark命令行
    2. spark集群配置(StandAlone:独立模式)
    • 进入 /soft/spark/conf 目录下,配置 slaves,spark-env.sh 文件
    // 在slaves文件中写入其他7台主机节点
    hadoop3
    hadoop4
    hadoop5
    hadoop6
    hadoop7
    hadoop8
    
    // 在spark-env.sh中写入
    SPARK_MASTER_HOST=hadoop1
    SPARK_MASTER_PORT=7077
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 配置 Job History Server,修改 /soft/spark/conf 目录下的 spark-defaults.conf 和 spark-env.sh 文件
    // 在 spark-env.sh 中添加如下配置
    export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://hadoop1:8020/directory"
    
    // 在spark-defaults.conf中修改
    spark.master                     spark://hadoop1:7077
    spark.eventLog.enabled           true
    spark.eventLog.dir               hdfs://hadoop1:8020/directory
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 分发上面所有的配置给其他节点(hadoop2 ~ hadoop8),并在 /etc/profile 中配置环境变量,source /etc/profile 立即生效
    // 分发解压文件
    [centos@hadoop1 /soft]$xsync.sh spark-2.3.1-bin-hadoop2.7
    
    // 分发符号链接
    [centos@hadoop1 /soft]$rsync -lr spark centos@hadoop2:/soft/
    [centos@hadoop1 /soft]$rsync -lr spark centos@hadoop3:/soft/
    [centos@hadoop1 /soft]$rsync -lr spark centos@hadoop4:/soft/
    [centos@hadoop1 /soft]$rsync -lr spark centos@hadoop5:/soft/
    [centos@hadoop1 /soft]$rsync -lr spark centos@hadoop6:/soft/
    [centos@hadoop1 /soft]$rsync -lr spark centos@hadoop7:/soft/
    [centos@hadoop1 /soft]$rsync -lr spark centos@hadoop8:/soft/
    
    环境变量
    export SPARK_HOME=/soft/spark
    export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 启动集群
    [centos@hadoop1 /soft/spark/sbin]$./start-all.sh
    
    • 1
    • 运行第一个spark程序(WordCount)
    
    // 进入spark shell
    [centos@hadoop1 /soft/spark/sbin]$ ./spark-shell
    
    // 运行
    scala> sc.textFile("hdfs://hadoop1:8020/wc.txt").flatMap(_.split(" "))
    .map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://hadoop1:8020/out")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    3. sparkHA搭建——基于zookeeper
    • 停掉spark集群:./spark-stop.sh

    • 修改 spark-env.sh 文件

    // 添加如下配置
    #ZK HA
    export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hadoop3:2181,hadoop3:2181,hadoop4:2181 -Dspark.deploy.zookeeper.dir=/spark"
    
    MASTER=spark://hadoop1:7077,spark://hadoop2:7077 bin/spark-shell
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 分发修改后的spark-env.sh文件给其他节点。在hadoop1上启动所有worker进程和master进程,在hadoop2上启动另一个master进程
    [centos@hadoop1 /soft/spark/sbin]$ ./start-all.sh
    
    [centos@hadoop2 /soft/spark/sbin]$./start-master.sh
    
    • 1
    • 2
    • 3

    大功告成!

    其他组建安装配置

    mysql、hive、flume …

    MySQL安装配置
    1. 安装MySQL

    在Linux上安装MySQL一般有两种方式。第一种就是使用yum命令进行安装(比较轻量,安装包较小,但依赖多,容易出错)。第二种方式就是通过解压MySQL包安装(包比较大,但是不容易出错)。本文采用第二种方式安装配置MySQL。

    $> rpm -qa|grep mariadb  // 查询出来已安装的mariadb  
    $> rpm -e --nodeps 文件名  // 卸载mariadb,文件名为上述命令查询出来的文件
    
    • 1
    • 2
    • 删除 etc目录下的 my.cnf
    $> rm /etc/my.cnf
    
    • 1
    • 创建名为mysql的用户组,创建一个名为mysql的用户,并将该用户加入mysql用户组
    //创建mysql用户组
    $> groupadd mysql
    
    //创建一个用户名为mysql的用户并加入mysql用户组
    $> useradd -g mysql mysql
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 将 mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz 复制到 /usr/local 目录下,并解压在当前目录下
    $> cp /mnt/hgfs/bigdata/soft/mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz /usr/local
    
    //解压该压缩文件
    $> tar -zxvf mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 将解压出来的文件夹重命名为mysql
    $> mv 解压出来的文件夹名 mysql
    
    • 1
    • 将 /usr/local/mysql/support-files 路径下的 my-default.cnf 文件拷贝到 /etc 目录下,重命名为 my.cnf
    [root@s201 /usr/local/mysql]# cp my-default.cnf /etc/my.cnf 
    
    • 1
    • 配置 my.cnf 文件
    [root@s201 /usr/local/mysql]# nano /etc/my.cnf
    
    [mysql]  
    # 设置mysql客户端默认字符集  
    default-character-set=utf8   
    socket=/var/lib/mysql/mysql.sock
    [mysqld]  
    skip-name-resolve  
    #设置3306端口  
    port = 3306   
    socket=/var/lib/mysql/mysql.sock  
    # 设置mysql的安装目录  
    basedir=/usr/local/mysql  
    # 设置mysql数据库的数据的存放目录  
    datadir=/usr/local/mysql/data  
    # 允许最大连接数  
    max_connections=200  
    # 服务端使用的字符集默认为8比特编码的latin1字符集  
    18. character-set-server=utf8  
    # 创建新表时将使用的默认存储引擎  
    default-storage-engine=INNODB  
    lower_case_table_name=1  
    max_allowed_packet=16M
    user=mysql //设置用户为mysql
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 如果是centos精简版本,可能需要安装Perl模块
    $> yum install -y perl
    $> yum install -y perl-Module-Install.noarch
    
    • 1
    • 2
    • 如果是centos系统,修改 /etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled,保存退出后重启机器

    • 进入安装 mysql 软件目录,安装数据库

    [root@hadoop1 ~]# cd /usr/local/mysql
    [root@hadoop1 /usr/local/mysql]# chown -R mysql:mysql ./       修改当前目录拥有着为mysql用户
    [root@hadoop1 /usr/local/mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
    
    • 1
    • 2
    • 3
    • 修改当前 data目录的拥有者为 mysql用户
    [root@hadoop1 /usr/local/mysql]# chown -R mysql:mysql data
    
    • 1
    2. 配置MySQL
    • 授予 my.cnf最大权限
    [root@hadoop1 /usr/local/mysql]# chown 777 /etc/my.cnf
    
    • 1
    • 复制启动脚本到资源目录
    [root@hadoop1 /usr/local/mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld 
    
    • 1
    • 增加 mysqld 服务控制脚本执行权限
    [root@hadoop1 /usr/local/mysql]# chmod +x /etc/rc.d/init.d/mysqld
    
    • 1
    • 将 mysqld 服务加入到系统服务
    [root@hadoop1 /usr/local/mysql]# chkconfig --add mysqld
    
    • 1
    • 检查 mysqld 服务是否已经生效
    [root@hadoop1 /usr/local/mysql]# chkconfig --list mysqld
    
    • 1

    image

    • 在 /var/lib 下创建 mysql 文件夹,修改权限
    [root@hadoop1 /usr/local/mysql]# mkdir /var/lib/mysql
    
    //设置权限
    [root@hadoop1 /usr/local/mysql]# chmod 777  /var/lib/mysql
    
    • 1
    • 2
    • 3
    • 4
    • 将 mysql 的 bin 目录加入 PATH 环境变量,编辑 ~/.bash_profile 文件
    [root@hadoop1 /usr/local/mysql]# nano ~/.bash_profile
    
    //在文件最后添加如下信息: 指定环境变量启动程序位置
    export PATH=$PATH:/usr/local/mysql/bin
    
    //执行下面的命令是修改的内容立即生效 :
    [root@hadoop1 /usr/local/mysql]# source ~/.bash_profile
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 启动mysqld
    //启动mysql服务
    [root@hadoop1 /usr/local/mysql]# service mysqld start
    
    //关闭mysql服务
    [root@hadoop1 /usr/local/mysql]# service mysqld stop
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 以 root 账户登录 mysql, 默认是没有密码的, 要输入密码的时候直接回车即可
    [root@hadoop1 /usr/local/mysql]# mysql -u root -p
    
    • 1

    注意: mysql -u root -p 命令可能会有异常:-bash: mysql: command not found。这是因为系统在默认的命令文件夹 /usr/bin 下没有找到 mysql 命令,需要在此文件夹下建一个符号链接

    [root@hadoop1 /usr/local/mysql]# ln -s /usr/local/mysql/bin/mysql /usr/bin
    
    • 1
    • 设置 root 账户密码为 root
    mysql>use mysql  
    mysql>update user set password=password('root') where user='root' and host='localhost';  
    mysql>flush privileges;  
    
    • 1
    • 2
    • 3
    • 设置远程主机登录,使用下面命令查看和添加,注意下面的 your username 和 your password 改成你需要设置的用户和密码
    查看用户
    select Host,User,Password from mysql.user;
    创建用户
    create user test identified by '123456';
    分配权限
    grant all privileges on *.* to 'test'@'%'identified by '123456' with grant option;
    
    //匹配整个数据库权限
    grant all privileges on *.* to 'root'@'%' identified by 'root';
    
    说明: 第一个’root’是用户名,第二个’%’是所有的ip都可以远程访问,第三个’123456’表示用户密码 如果不常用就关闭掉。
    
    刷新
    flush privileges ;
    修改指定用户密码
    update mysql.user set password=password('新密码') where User="test" and Host="localhost";
    删除用户
    delete from user where User='test' and Host='localhost';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    image

    image

    • CentOS7 防火墙设置
    重启防火墙
    firewall-cmd --reload
    停止防火墙
    systemctl stop firewalld.service
    禁止防火墙开机启动
    systemctl disable firewalld.service
    删除
    firewall-cmd --zone= public --remove-port=80/tcp --permanent
    
    关闭防火墙 
    1) 永久性生效,重启后不会复原
    开启: chkconfig iptables on
    关闭: chkconfig iptables off
    2) 即时生效,重启后复原
    开启: service iptables start
    关闭: service iptables stop
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 成功示例

    image

    3. 问题解决
    4. 说明

    本文详细参考了 https://blog.csdn.net/u013421629/article/details/79638315 文档,在此对原作者的辛苦整理表示感谢!!!

    Hive安装配置
    1. hive安装

    hadoop3,hadoop4,hadoop5上安装

    • 准备hive安装包:apache-hive-2.3.3-bin.tar.gz ,解压到 /soft 目录下,并创建符号链接
    // 解压
    [centos@hadoop3 /home/centos/localsoft]$ tar -xzvf apache-hive-2.3.3-bin.tar.gz -C /soft
    
    // 创建符号链接
    [centos@hadoop3 /soft]$ ln -s /soft/apache-hive-2.3.3-bin hive
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 在 /etc/profile 中配置环境变量,source /etc/profile 立即生效
    [centos@hadoop3 /home/centos]$ sudo nano /etc/profile
    
    导入环境变量
    export HIVE_HOME=/soft/hive
    export PATH=$PATH:$HIVE_HOME/bin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    2. hive配置

    使用MySQL来存放hive的元数据

    • 将mysql的驱动程序复制到 /soft/hive/lib 目录下
    [centos@hadoop3 /home/centos/localsoft]$cp mysql-connector-java-5.1.44.jar /soft/hive/lib/
    
    • 1
    • 将 /soft/hive/conf/hive-default.xml.template 文件复制为 hive-site.xml,并进行如下配置:
    $> cp /soft/hive/conf/hive-default.xml.template /soft/hive/conf/hive-site.xml 
    
    //配置如下属性
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://59.68.29.79:3306/hive</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>root</value>
    </property>
    
    <property>
        <name>hive.exec.local.scratchdir</name>
        <value>/home/centos/hive</value>
    </property>
    <property>
        <name>hive.downloaded.resources.dir</name>
        <value>/home/centos/hive/downloads</value>
    </property>
    <property>
        <name>hive.querylog.location</name>
        <value>/home/centos/hive/querylog</value>
    </property>
    <property>
        <name>hive.server2.logging.operation.log.location</name>
        <value>/home/centos/hive/server2_logs</value>
    </property>
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
    
    <property>
        <name>hive.server2.enable.doAs</name>
        <value>false</value>
    </property>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 在mysql中创建存放hive元数据的数据库 hive
    mysql> create database hive;
    
    • 1
    • 初始化hive的元数据到mysql中
    [centos@hadoop3 /soft/hive/bin]$schematool -dbType mysql -initSchema
    
    • 1
    • 向其他两台主机发送所有配置,在 /etc/profile 中配置环境变量,source /etc/profile 立即生效
    // 分发解压文件
    [centos@hadoop3 /soft]$scp -r apache-hive-2.3.3-bin centos@hadoop4:/soft/
    [centos@hadoop3 /soft]$scp -r apache-hive-2.3.3-bin centos@hadoop5:/soft/
    
    // 分发符号链接
    [centos@hadoop3 /soft]$rsync -lr hive centos@hadoop4:/soft/
    [centos@hadoop3 /soft]$rsync -lr hive centos@hadoop5:/soft/
    
    导入环境变量
    export HIVE_HOME=/soft/hive
    export PATH=$PATH:$HIVE_HOME/bin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    hive的基本命令:

    // 进入hive
    [centos@hadoop3 /home/centos]$ hive
    
    $hive>create database mydb2 ;		        //创建数据库 mydb2
    $hive>show databases ;
    $hive>use mydb2 ;
    $hive>create table mydb2.t(id int,name string,age int);
    $hive>drop table t ;
    $hive>drop table mydb2.t ;
    $hive>select * from mydb2.t ;		//查看指定库的表
    $hive>exit ;						//退出
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    Flume安装配置

    Flume是一个日志采集系统,在8台主机上都进行配置

    • 准备安装包:apache-flume-1.8.0-bin.tar.gz,解压到 /soft 目录下,并创建符号链接
    // 解压
    [centos@hadoop1 /home/centos/localsoft]$tar -xzvf apache-flume-1.8.0-bin.tar.gz -C /soft/
    
    // 创建符号链接
    [centos@hadoop1 /soft]$ln -s /soft/apache-flume-1.8.0-bin flume
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 在 /etc/profile 中配置环境变量,source /etc/profile 立即生效
    [centos@hadoop3 /home/centos]$ sudo nano /etc/profile
    
    导入环境变量
    export FLUME_HOME=/soft/flume
    export PATH=$PATH:$FLUME_HOME/bin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 分发所有配置给其他主机节点,在 /etc/profile 中配置环境变量,source /etc/profile 立即生效
    // 分发解压文件
    [centos@hadoop1 /soft]$xsync.sh apache-flume-1.8.0-bin
    
    // 分发符号链接
    [centos@hadoop1 /soft]$rsync -lr flume centos@hadoop2:/soft/ 
    [centos@hadoop1 /soft]$rsync -lr flume centos@hadoop3:/soft/ 
    [centos@hadoop1 /soft]$rsync -lr flume centos@hadoop4:/soft/ 
    [centos@hadoop1 /soft]$rsync -lr flume centos@hadoop5:/soft/ 
    [centos@hadoop1 /soft]$rsync -lr flume centos@hadoop6:/soft/ 
    [centos@hadoop1 /soft]$rsync -lr flume centos@hadoop7:/soft/ 
    [centos@hadoop1 /soft]$rsync -lr flume centos@hadoop8:/soft/
    
    导入环境变量
    export HIVE_HOME=/soft/hive
    export PATH=$PATH:$HIVE_HOME/bin
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 验证是否安装成功:flume-ng version

    本文转与http://www.pianshen.com/article/849261746/

  • 相关阅读:
    POJ3690:Constellations——题解
    BZOJ1857:[SCOI2010]传送带——题解
    CF578C:Weakness and Poorness——题解
    程序员教我的那些事
    程序员教我的那些事
    手把手教你利用Jenkins持续集成iOS项目
    手把手教你利用Jenkins持续集成iOS项目
    手把手教你利用Jenkins持续集成iOS项目
    华为招聘-​分布式并行计算解决方案测试工程师
    华为招聘-​分布式并行计算解决方案测试工程师
  • 原文地址:https://www.cnblogs.com/aibabel/p/10932115.html
Copyright © 2011-2022 走看看