搭建大数据三节点(Hadoop、Hbase、Zookeeper、Kafka、Hive)环境(含配置文件参考)

心之所向,身之所往,己不由心,身又岂能由己,心之所向,一鹿向羊

搭建大数据三节点(Hadoop、Hbase、Zookeeper、Kafka、Hive)环境(含配置文件参考)_第1张图片
1.jpg

话不投机半句多,上干货

hbase 集群环境搭建

1)操作系统,ubuntu ,版本信息如下:
ceson@ceson01:~/wechat_env$ cat /proc/version
Linux version 4.15.0-54-generic (buildd@lgw01-amd64-014) (gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)) #58-Ubuntu SMP Mon Jun 24 10:55:24 UTC 2019
2)JDK:1.8
3)zookeeper版本: zookeeper-3.4.12
4)hadoop版本: hadoop-3.1.2
5)hbase版本: hbase-2.0.5
6)hive版本:hive-3.1.2
7)三个主机(IP及机器名,IP可以随意更改,主机名尽可能保持一致,后面所有配置都以主机名写入zookeeper,hadoop,hbase配置文件;
  如果你机器名不是这个,后面的机器名配置更改为你环境中的机器名):
192.168.1.134 ceson01
192.168.1.107 ceson02
192.168.1.169 ceson03
8)kafka版本: kafka_2.11-2.0.0
9)三个机器创建用户ceson/ceson(username/password)

hbase三个ip地址(可随意更换)及hostname(最好不变, 代码层面会根据hostname找到hbase)

目前hbase使用三个机器部署集群,需要修改hostname,以及hosts文件修改,请使用有权限的用户执行以下操作
note:建议ip使用静态设置,避免使用动态获取ip的方式,否则Ip和机器名映射就出现错乱

登录192.168.1.134
vim /etc/hostname
ceson01

假如重启机器后,hostname不生效,修改以下配置文件
vim  /etc/cloud/cloud.cfg
This will cause the set+update hostname module to not operate (if true)
preserve_hostname: true  #这里是将false改成true

vim /etc/hosts
192.168.1.134    ceson01
192.168.1.107    ceson02
192.168.1.169    ceson03

reboot

登录192.168.1.107
vim /etc/hostname
ceson02

vim  /etc/cloud/cloud.cfg
This will cause the set+update hostname module to not operate (if true)
preserve_hostname: true  #这里是将false改成true

vim /etc/hosts
192.168.1.134    ceson01
192.168.1.107    ceson02
192.168.1.169    ceson03

reboot

登录192.168.1.169
vim /etc/hostname
ceson03

vim  /etc/cloud/cloud.cfg
This will cause the set+update hostname module to not operate (if true)
preserve_hostname: true  #这里是将false改成true

vim /etc/hosts
192.168.1.134    ceson01
192.168.1.107    ceson02
192.168.1.169    ceson03

reboot

jdk版本:

下载jdk1.8,及配置环境变量,以下版本为测试环境版本:
note:当前hbase版本必须使用jdk1.8或以上

ceson@ceson01:~$ java -version
java version "1.8.0_141"
Java(TM) SE Runtime Environment (build 1.8.0_141-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)

zookeeper,hadoop,hbase,hive,kafka 版本:

分别下载zookeeper-3.4.12,hadoop-3.1.2,hbase-2.0.5,hive-3.1.2,kafka_2.11-2.0.0 组件,以下版本为参考:

https://archive.apache.org/dist/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz
http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-3.1.2/hadoop-3.1.2.tar.gz
http://archive.apache.org/dist/hbase/2.0.5/hbase-2.0.5-bin.tar.gz
http://archive.apache.org/dist/kafka/2.0.0/kafka_2.11-2.0.0.tgz
https://www-eu.apache.org/dist/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz

使用ceson账户登录(其它两个机器的操作执行以下的操作)
mkdir wechat_env
cd wechat_env
自己到上面链接下载后上传到该目录
或者如下操作下载组件
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-3.1.2/hadoop-3.1.2.tar.gz
wget http://archive.apache.org/dist/hbase/2.0.5/hbase-2.0.5-bin.tar.gz
wget http://archive.apache.org/dist/kafka/2.0.0/kafka_2.11-2.0.0.tgz
wget https://www-eu.apache.org/dist/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
假设zookeeper,habase组件都在以下目录路径下:/home/ceson/wechat_env:

note:如果不是该目录(/home/ceson/wechat_env):
以root用户登录授权登录用户(testuser)文件夹wechat_env所有权限(以下两个命令以ceson用户登录的不用执行)
chown -R testuser /yourpath/wechat_env
su testuser

检查你当前操作的路径
ceson@ceson01:~/wechat_env$ pwd
/home/ceson/wechat_env

解压zookeeper,hadoop,hbase三个文件

tar zxvf hbase-2.0.5-bin.tar.gz
tar zxvf hadoop-3.1.2.tar.gz
tar zxvf zookeeper-3.4.12.tar.gz

配置无密码SSH访问 该步骤不是必须,但有该步操作,后面需要登录其它机器,则不需要输入密码

a.登录三台主机上分别执行 ssh-keygen -t rsa 生成公钥和私钥,
b.将三台主机的公钥分别追加到主机的~/.ssh/authorized_keys,在登录三台主机后都执行以下三条命令
ssh-copy-id -i ~/.ssh/id_rsa.pub ceson@ceson01
ssh-copy-id -i ~/.ssh/id_rsa.pub ceson@ceson02
ssh-copy-id -i ~/.ssh/id_rsa.pub ceson@ceson03

经过上面操作ceson01ceson02,ceson03就可以无密码相互登录
检查是否配置正确,以在ceson01机器操作示例
ssh ceson02
ssh ceson03
均可以实现无密码登录

1.部署zookeeper-3.4.12

1.1 修改配置文件zoo.cfg(注意:修改哪个机器的配置文件,就把对应的ceson0123改为0.0.0.0)

cd /home/ceson/wechat_env/zookeeper-3.4.12/conf
cp zoo_sample.cfg zoo.cfg 
vim zoo.cfg 
note:在文件末尾加入以下配置,其它默认,注释掉原来的配置# dataDir=/tmp/zookeeper
dataDir=/home/ceson/wechat_env/zookeeper/data
dataLogDir=/home/ceson/wechat_env/zookeeper/logs
server.1=ceson01:2888:3888
server.2=ceson02:2888:3888
server.3=ceson03:2888:3888

server.4=192.168.1.185:2888:3888
server.5=192.168.1.119:2888:3888

1.2 在ceson01机器执行下面的操作

cd /home/ceson/wechat_env
scp -r ./zookeeper-3.4.12/ ceson@ceson02:/home/ceson/wechat_env
scp -r ./zookeeper-3.4.12/ ceson@ceson03:/home/ceson/wechat_env

1.3 设置zookeeper数据目录

cd /home/ceson/wechat_env
ceson@ceson01:~/wechat_env$ mkdir zookeeper
ceson@ceson01:~/wechat_env$ cd zookeeper
ceson@ceson01:~/wechat_env/zookeeper$ mkdir data
ceson@ceson01:~/wechat_env/zookeeper$ echo 1 > /home/ceson/wechat_env/zookeeper/data/myid
ceson@ceson01:~/wechat_env/zookeeper$ ls
data
ceson@ceson01:~/wechat_env/zookeeper$ cd data/
ceson@ceson01:~/wechat_env/zookeeper/data$ ls
myid
ceson@ceson01:~/wechat_env/zookeeper/data$ more myid
1

1.4 复制zookeeper data目录到其它两个机器,需要另外登录其它两个机器修改myid文件

cd /home/ceson/wechat_env
ceson@ceson01:~/wechat_env$ scp -r ./zookeeper/ ceson@ceson02:/home/ceson/wechat_env
ceson@ceson01:~/wechat_env$ scp -r ./zookeeper/ ceson@ceson03:/home/ceson/wechat_env

1.5 登录ceson02机器,执行以下操作

ceson@ceson02:~$ echo 2 > /home/ceson/wechat_env/zookeeper/data/myid
ceson@ceson02:~$ more /home/ceson/wechat_env/zookeeper/data/myid
2

1.6 登录ceson03机器,执行以下操作

ceson@ceson03:~$ echo 3 > /home/ceson/wechat_env/zookeeper/data/myid
ceson@ceson03:~$ more /home/ceson/wechat_env/zookeeper/data/myid
3

1.7 修改zookeeper环境变量(以ceson01机器为例,其它两个机器执行同样操作)如果该文件无法修改,可切换有权限的用户修改该文件

su root
root@ceson01:/home/ceson# vim /etc/profile
在文件末尾加入以下配置
export ZOOKEEPER_HOME=/home/ceson/wechat_env/zookeeper-3.4.12
export PATH=$PATH:$ZOOKEEPER_HOME/bin

root@ceson01:/home/ceson# source /etc/profile

1.8 在三台主机上分别执行如下命令,确认zookeeper是否正确启动

ceson@ceson01:~$ zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/ceson/wechat_env/zookeeper-3.4.12/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

1.9 在三台机器上面查询zookeeper运行状态(见如下信息)

ceson@ceson01:~$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/ceson/wechat_env/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower
ceson@ceson02:~$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/ceson/wechat_env/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower
ceson@ceson03:~$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/ceson/wechat_env/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: leader

1.10 ubuntu 18设置静态ip,下面以设置固定Ip:192.168.1.134为例;在/etc/netplan目录下有个.yaml文件,
当前环境的文件名为50-cloud-init.yaml,以修改后的内容替换原来的部分(如果当前用户无权限修改该文件,请更换操作账户)
note:如果不设置静态Ip,重启后Ip有变动的话,就需要登录每个zookeeper的机器更改hosts文件,修改ip,机器名的映射

原来文件内容
network:
    ethernets:
        ens18:
            dhcp4: true
    version: 2

修改后的文件内容
network:
    ethernets:
        ens18:  #配置的网卡名称 ,该节点使用你环境的配置即可,不一定是这个名称
            dhcp4: no #dhcp4关闭
            addresses: [192.168.1.134/24]   #设置当前机器IP及掩码
            gateway4: 192.168.1.253   #设置网关,改为测试环境所在的网关
    version: 2
执行以下命令
cd /etc/netplan
vim 50-cloud-init.yaml

sudo netplan apply

1.11 在三台机器执行以下操作,配置zookeerper开机启动

a.创建/etc/rc.local文件,使用有权限的用户编辑该文件,当前是以root用户执行
root@ceson01:/home/ceson# vim /etc/rc.local
添加需要开机启动的任务(加入以下5行脚本,如果rc.local已经存在的,第一行代码不用加入)
#!/bin/bash
# JDK ENV
export JAVA_HOME=/usr/lib/jdk1.8.0_141
# startup zookeerper 使用ceson账户启动zookeeper,“-l”表示以登录方式执行
su ceson -l -c '/home/ceson/wechat_env/zookeeper-3.4.12/bin/zkServer.sh start'

b. 赋可执行权限
root@ceson01:/home/ceson# chmod 755 /etc/rc.local

c.验证以上修改是否有效,重启机器后执行以下命令即可
ceson@ceson01:~$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/ceson/wechat_env/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower

2.部署hadoop

2.1 设置ulimit:
先查看当前用户 ulimit:

ulimit -n
修改操作: echo ulimit -n 32768 >>/etc/profile
不重启生效命令:source /etc/profile
在文件 /etc/security/limits.conf末尾增加两行
ceson           -       nofile          32768
ceson         soft/hard nproc           32000

ceson 替换成你运行Hbase和Hadoop的用户

2.2 在/etc/pam.d/common-session 加上这一行
note:pam_limits.so模块可以使用在对一般应用程序使用的资源限制方面。如果需要在SSH服务器上对来自不同用户的ssh访问进行限制,就可以调用该模块来实现相关功能。
当需要限制用户admin登录到SSH服务器时的最大连接数(防止同一个用户开启过多的登录进程),就可以在/etc/pam.d/sshd文件中增加一行对pam_limits.so模块的调用:

vim /etc/pam.d/common-session
session required  pam_limits.so

2.3 进入目录/home/ceson/wechat_env/hadoop-3.1.2/etc/hadoop,修改以下6个文件:
hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、workers

cd /home/ceson/wechat_env/hadoop-3.1.2/etc/hadoop

2.3.1 修改文件 hadoop-env.sh,指定JAVA_HOME设置

vim hadoop-env.sh
export JAVA_HOME=/usr/lib/jdk1.8.0_141

2.3.2 修改文件 core-site.xml
fs.defaultFS指定NameNode的地址
hadoop.tmp.dir指定临时文件的目录

vim core-site.xml


    
    
        fs.defaultFS
        hdfs://cluster
    
    
    
        hadoop.tmp.dir
        /home/ceson/wechat_env/hadoop/tmp
    

    
    
        ha.zookeeper.quorum
        ceson01:2181,ceson02:2181,ceson03:2181
    

2.3.3 修改文件 hdfs-site.xml
dfs.replication指定数据文件冗余的份数

vim hdfs-site.xml


    
        dfs.namenode.name.dir
        file:/home/ceson/wechat_env/hadoop/hdfs/name
    
    
        dfs.datanode.data.dir
        file:/home/ceson/wechat_env/hadoop/hdfs/data
    
    
    
    
        dfs.replication
        3
    

    
    
        dfs.nameservices
        cluster
    

    
    
        dfs.ha.namenodes.cluster
        nn1,nn2
    

    
    
        dfs.namenode.rpc-address.cluster.nn1
        ceson01:9000
    

    
    
        dfs.namenode.rpc-address.cluster.nn2
        ceson02:9000
    

    
    
        dfs.namenode.http-address.cluster.nn1
        ceson01:50070
    

    
    
        dfs.namenode.http-address.cluster.nn2
        ceson02:50070
    
      
    
    
        dfs.namenode.shared.edits.dir
        qjournal://ceson01:8485;ceson02:8485;ceson03:8485/cluster
    

    
    
        dfs.ha.automatic-failover.enabled
        true
    

    
    
        dfs.journalnode.edits.dir
        /home/ceson/wechat_env/hadoop/tmp/data/dfs/journalnode
    

    
    
        dfs.client.failover.proxy.provider.cluster
        org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
    

    
    
        dfs.ha.fencing.methods
        
        sshfence
        shell(/bin/true)
        
    

    
    
        dfs.ha.fencing.ssh.private-key-files
        /home/ceson/.ssh/id_rsa
    

    
    
        dfs.webhdfs.enabled
        true
    

    
        dfs.journalnode.http-address
        0.0.0.0:8480
    

    
        dfs.journalnode.rpc-address
        0.0.0.0:8485
    

    
    
        dfs.ha.fencing.ssh.connect-timeout
        30000
    

2.3.4 修改文件 mapred-site.xml
指定运行mapreduce的框架为YARN

vim mapred-site.xml


    
    
        mapreduce.framework.name
        yarn
    

    
        yarn.app.mapreduce.am.env
        HADOOP_MAPRED_HOME=/home/ceson/wechat_env/hadoop-3.1.2
    
    
        mapreduce.map.env
        HADOOP_MAPRED_HOME=/home/ceson/wechat_env/hadoop-3.1.2
    
    
        mapreduce.reduce.env
        HADOOP_MAPRED_HOME=/home/ceson/wechat_env/hadoop-3.1.2
    


2.3.5 修改文件 yarn-site.xml
指定运行YARN的主机、地址和reducer获取数据的方式

vim yarn-site.xml


    
    
    
        yarn.resourcemanager.ha.enabled
        true
    

    
    
        yarn.resourcemanager.cluster-id
        yrc
    

    
    
        yarn.resourcemanager.ha.rm-ids
        rm1,rm2
    
  
    
    
        yarn.resourcemanager.hostname.rm1
        ceson01
    
  
    
    
        yarn.resourcemanager.hostname.rm2
        ceson02
    
  
    
    
        yarn.resourcemanager.ha.id
        rm1
    
  
    
    
        yarn.resourcemanager.zk-address
        ceson01:2181,ceson02:2181,ceson03:2181
    
  
    
    
        yarn.nodemanager.aux-services
        mapreduce_shuffle
    

2.3.6 修改文件 workers

vim workers
ceson01
ceson02
ceson03

2.4 ceson01主机把配置文件同步给另两台主机

scp -r /home/ceson/wechat_env/hadoop-3.1.2/etc/hadoop/ ceson@ceson02:/home/ceson/wechat_env/hadoop-3.1.2/etc/
scp -r /home/ceson/wechat_env/hadoop-3.1.2/etc/hadoop/ ceson@ceson03:/home/ceson/wechat_env/hadoop-3.1.2/etc/

scp -r /home/dev/wechat_env/hadoop-3.1.2/etc/hadoop/ dev@ceson05:/home/dev/wechat_env/hadoop-3.1.2/etc/
scp -r /home/dev/wechat_env/hadoop-3.1.2/etc/hadoop/ dev@ceson06:/home/dev/wechat_env/hadoop-3.1.2/etc/

在ceson02节点(hadoop高可用备用节点)修改yarn-site.xml(下面部分的配置原来是rm1

    
        yarn.resourcemanager.ha.id
        rm2
    

在ceson03节点修改yarn-site.xml 删除以下属性

    
        yarn.resourcemanager.ha.id
        rm1
    

2.5 ceson01主机初次运行需要格式化hdfs,后面运行就不需要步骤

每个hadoop节点启动journalnode
hdfs --daemon start journalnode

# 在节点ceson01上手动输入[hdfs namenode –format]
hdfs namenode –format

#格式化 zk(在ceson01 手动输入)
hdfs zkfc –formatZK

#启动 ceson01 namenode 
hadoop-daemon.sh start namenode

#ceson02上同步ceson01 namenode元数据 
hdfs namenode -bootstrapStandby

2.6 启动Hadoop集群环境

start-all.sh
或者启动
start-dfs.sh
start-yarn.sh

2.7 主备节点启动状况查看

ceson@ceson01:~$ hdfs haadmin -getServiceState nn1
active
ceson@ceson01:~$ hdfs haadmin -getServiceState nn2
standby

2.8 验证hadoop
50070端口是Hadoop管理页面,切到Datanodes选项卡可以看到集群所有Datanode的情况
8088端口是YARN管理页面,可以看到集群节点运行任务的情况

http://ceson01:50070/
http://ceson01:8088/

或者jsp命令 主备master节点一般都会驻留以下进程,非master节点只有以下部分进程
21776 DataNode
22725 ResourceManager
21271 NameNode
22919 NodeManager
21005 JournalNode
22302 DFSZKFailoverController

3.部署hbase

3.1 进入解压后的hbase目录,修改 hbase-env.sh 文件,修改jdk配置和ZooKeeper配置,如下所示

ceson@ceson01:~$ cd /home/ceson/wechat_env/hbase-2.0.5/conf
ceson@ceson01:~/wechat_env/hbase-2.0.5/conf$ vim hbase-env.sh
修改以下两个配置
export JAVA_HOME=/usr/lib/jdk1.8.0_141
# Tell HBase whether it should manage it's own instance of ZooKeeper or not.
export HBASE_MANAGES_ZK=false

3.2 修改 hbase-site.xml 文件,修改节点内容,内容如下
hbase.rootdir表示HBase的存储目录,要和Hadoop的core-site.xml配置一致
hbase.cluster.distributed表示是否分布式存储
hbase.zookeeper.quorum指定ZooKeeper管理的机器

ceson@ceson01:~/wechat_env/hbase-2.0.5/conf$ vim hbase-site.xml


    
    
        hbase.tmp.dir
        /home/ceson/wechat_env/hbase
    
    
    
        hbase.rootdir
        hdfs://cluster/hbase
    

    
    
        hbase.master
        60000
    

    
    
        hbase.cluster.distributed
        true
    

    
    
        hbase.zookeeper.quorum
        ceson01,ceson02,ceson03
    

    
    
        hbase.zookeeper.property.clientPort
        2181
    
    
    
    
        hbase.unsafe.stream.capability.enforce
        false
    
    

3.3 修改 regionservers 文件 :

ceson@ceson01:~/wechat_env/hbase-2.0.5/conf$ vim regionservers
往regionservers文件写入如下内容
ceson01
ceson02
ceson03

3.4 修改 HBase 支持对 Hmaster 的高可用配置

创建文件conf/backup-masters
ceson@ceson01:~/wechat_env/hbase-2.0.5/conf$ vim backup-masters
往backup-masters文件写入如下内容
ceson02

3.5 将ceson01节点的配置同步到其它节点

a.复制ceson01节点中hadoop配置文件hdfs-site.xml到ceson01节点habase conf下面,执行下面脚本
scp -r /home/ceson/wechat_env/hadoop-3.1.2/etc/hadoop/hdfs-site.xml ceson@ceson01:/home/ceson/wechat_env/hbase-2.0.5/conf/hdfs-site.xml

b.同步ceson01配置到其它节点
scp -r /home/ceson/wechat_env/hbase-2.0.5/conf/ ceson@ceson02:/home/ceson/wechat_env/hbase-2.0.5
scp -r /home/ceson/wechat_env/hbase-2.0.5/conf/ ceson@ceson03:/home/ceson/wechat_env/hbase-2.0.5

3.6 启动hbase

/home/ceson/wechat_env/hbase-2.0.5/bin/start-hbase.sh 

note:如果有log4j错误
每个hbase安装的节点执行以下脚本删除jar
rm -rf /home/ceson/wechat_env/hbase-2.0.5/lib/slf4j-log4j12-1.7.25.jar

3.7 验证hbase

登录三台机器,执行
jps
master节点机器有以下进程
28117 HMaster

备用节点
31281 HMaster
31131 HRegionServer

其它节点
29371 HRegionServer

或者访问
http://192.168.1.134:16010

打开页面测试查看高可用是否启用
http://ceson02:16010

3.8 异常处理

a.在master节点机器出现如下异常信息【Master startup cannot progress, in holding-pattern until region onlined】,执行以下脚本,清除在zk中hbase节点信息
stop-hbast.sh
zkCli.sh
rmr /hbase
start-hbase.sh

b.stop-hbase.sh 一直......
执行hbase-daemons.sh stop regionserver
在jps kill掉Master

替换hbase安装目录下的hadoop版本,当前部署暂不替换。

4 安装kafka集群(要启动kafka集群,需要先启动zookeeper集群)

4.1 下载及解压kafka,当前集群以下版本为例(当前kafka集群使用上面配置的zk集群)

cd /home/ceson/wechat_env

wget http://archive.apache.org/dist/kafka/2.0.0/kafka_2.11-2.0.0.tgz 

tar -xvf kafka_2.11-2.0.0.tgz

4.2 编辑配置文件server.properties,

cd kafka_2.11-2.0.0/config/
sudo vim server.properties

修改以下配置项,由于上面的机器已经修改了hostname,可以使用hostname或者ip,当前执行命令的机器在ceson01所以listeners对应的机器名是ceson01(localhost或者ip均可)
broker.id 每个broker都有一个唯一的id值用来区分彼此,Kafka broker的id值必须大于等于0时才有可能正常启动
zookeeper.connect属性指需要指向的zookeeper,可以两台或以上即可,目前三台zookeeper,所以均写上。

ceson01机器的kafka配置
broker.id=1
listeners=PLAINTEXT://ceson01:9092
zookeeper.connect=ceson01:2181,ceson02:2181,ceson03:2181
log.dirs=/home/ceson/wechat_env/kafka/logs

ceson02机器的kafka配置
broker.id=2
listeners=PLAINTEXT://ceson02:9092
zookeeper.connect=ceson01:2181,ceson02:2181,ceson03:2181
log.dirs=/home/ceson/wechat_env/kafka/logs

ceson03机器的kafka配置
broker.id=3
listeners=PLAINTEXT://ceson03:9092
zookeeper.connect=ceson01:2181,ceson02:2181,ceson03:2181
log.dirs=/home/ceson/wechat_env/kafka/logs

4.3 启动kafka

cd /home/ceson/wechat_env/kafka_2.11-2.0.0
bin/kafka-server-start.sh config/server.properties

设置开机启动kafka 修改/etc/rc.local文件,在上面启动zookeeper的后面追加

添加需要开机启动的任务(加入以下5行脚本,如果rc.local已经存在的,第一行代码不用加入)
#!/bin/bash
# JDK ENV
export JAVA_HOME=/usr/lib/jdk1.8.0_141
# startup zookeerper 使用ceson账户启动zookeeper,“-l”表示以登录方式执行
su ceson -l -c '/home/ceson/wechat_env/zookeeper-3.4.12/bin/zkServer.sh start'

sleep 3s

cd /home/ceson/wechat_env/kafka_2.11-2.0.0
# startup kafka
su ceson -l -c 'bin/kafka-server-start.sh config/server.properties &'

4.3 设置开机启动kafka 修改/etc/rc.local文件,在上面启动zookeeper的后面追加

sudo vim /etc/rc.local

sleep 3s

# startup kafka 注意后面的符号'&':如果不加,否则在该命令后面启动的其它需要开机启动的服务无法启动,所以要谨记加入该符号。
su ceson -l -c '/home/ceson/wechat_env/kafka_2.11-2.0.0/bin/kafka-server-start.sh /home/ceson/wechat_env/kafka_2.11-2.0.0/config/server.properties &'

5 设置开机启动hadoop,hbase集群,以下的开机启动只是简单方式的启动,生产环境应该采用更严谨的启动方式,下面的启动方式仅作为参考。

5.1 设置开机启动hadoop 修改/etc/rc.local文件,后面追加

sudo vim /etc/rc.local

sleep 3s

# startup hadoop
su ceson -l -c '/home/ceson/wechat_env/hadoop-3.1.2/sbin/start-dfs.sh'

sleep 3s

su ceson -l -c '/home/ceson/wechat_env/hadoop-3.1.2/sbin/start-yarn.sh'

5.2 设置开机启动hbase,habase启动需要依赖hadoop,所以需要把hbase启动放在hadoop后面


sudo vim /etc/rc.local

sleep 3s

# startup hbase
su ceson -l -c '/home/ceson/wechat_env/hbase-2.0.5/bin/start-hbase.sh'

5 安装hive组件 (hive只需要在NameNode节点安装即可,datanode节点可以不安装)

5.1 下载及解压hive组件,当前以下版本为例

cd /home/ceson/wechat_env

### 自行下载或者使用下面方式下载hive组件
wget https://www-us.apache.org/dist/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz

tar -xvf apache-hive-3.1.2-bin.tar.gz
mv apache-hive-3.1.2-bin apache-hive-3.1.2
pwd
/home/ceson/wechat_env/apache-hive-3.1.2
sudo vim /etc/profile
###文件最后追加下面三行配置
# set hive env
export HIVE_HOME=/home/ceson/wechat_env/apache-hive-3.1.2
export PATH=$PATH:$HIVE_HOME/bin

###配置生效
source  /etc/profile

5.2 hive新建配置目录

mkdir /home/ceson/wechat_env/hive
mkdir /home/ceson/wechat_env/hive/warehouse

5.3 在hadoop添加hive的相关文件目录并设置相应权限

hadoop fs -mkdir -p /home/ceson/wechat_env/hive
hadoop fs -mkdir -p /home/ceson/wechat_env/hive/tmp
hadoop fs -mkdir -p /home/ceson/wechat_env/hive/log
hadoop fs -mkdir -p /home/ceson/wechat_env/hive/warehouse

hadoop fs -chmod -R 0777 /home/ceson/wechat_env/hive

5.4 检查这目录是否成功创建

ceson@ceson01:~/wechat_env$ hadoop fs -ls /home/ceson/wechat_env/hive
Found 3 items
drwxrwxrwx   - ceson supergroup          0 2019-09-12 14:58 /home/ceson/wechat_env/hive/log
drwxrwxrwx   - ceson supergroup          0 2019-09-12 14:58 /home/ceson/wechat_env/hive/tmp
drwxrwxrwx   - ceson supergroup          0 2019-09-12 14:26 /home/ceson/wechat_env/hive/warehouse

5.5 修改hive-site.xml
cd /home/ceson/wechat_env/apache-hive-3.1.2/conf
cp hive-default.xml.template hive-site.xml
vim hive-site.xml




    
    
        hive.exec.scratchdir
        /home/ceson/wechat_env/hive/tmp
    
    
    
        hive.metastore.warehouse.dir
        /home/ceson/wechat_env/hive/warehouse
    
    
    
        hive.querylog.location
        /home/ceson/wechat_env/hive/log
    
    
        javax.jdo.option.ConnectionURL
        jdbc:mysql://192.168.1.119:3306/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true
    
    
        javax.jdo.option.ConnectionDriverName
        com.mysql.jdbc.Driver
    
    
        javax.jdo.option.ConnectionUserName
        root
    
    
        javax.jdo.option.ConnectionPassword
        123456
     

5.6 修改hive-env.sh文件

cd /home/ceson/wechat_env/apache-hive-3.1.2/conf
cp hive-env.sh.template hive-env.sh
vim hive-env.sh #追加下面脚本

# Hive Configuration Directory can be controlled by:
export JAVA_HOME=/usr/lib/jdk1.8.0_141
export HADOOP_HOME=/home/ceson/wechat_env/hadoop-3.1.2
export HIVE_HOME=/home/ceson/wechat_env/apache-hive-3.1.2
export HIVE_CONF_DIR=${HIVE_HOME}/conf 

# Folder containing extra libraries required for hive compilation/execution can be controlled by:
export HIVE_AUX_JARS_PATH=${HIVE_HOME}/lib

5.7 初始化hive(当前初始化使用了mysql作为基本数据库)

下载mysql-connector-java.jar拷到hive_home/lib下面,再执行下面命令

schematool -dbType mysql -initSchema

5.8 查看初始化信息

schematool -dbType mysql -initInfo

5.9 启动hive

ceson@ceson01:~/wechat_env$ hive

5.10 复制到ceson02节点(03节点可以不安装)

ceson@ceson01:~/wechat_env$ scp -r ./apache-hive-3.1.2 ceson@ceson02:/home/ceson/wechat_env
在ceson02机器执行5.1中的hive环境变量设置

你可能感兴趣的:(搭建大数据三节点(Hadoop、Hbase、Zookeeper、Kafka、Hive)环境(含配置文件参考))