在虚拟机或Docker中搭建大数据伪分布式集群(二):集群添加zookeeper与HBase/Phoenix

在虚拟机或Docker中搭建大数据伪分布式集群(二):集群添加zookeeper与HBase/Phoenix

上接:在虚拟机或Docker中搭建大数据伪分布式集群(一):hdfs 与 yarn 基础

TODO:后期在写个 init.sh 脚本,一次性搞定安装启动配置等这些东西,自动化流水化作业


目录

一、zookeeper 安装配置

1、安装

2、修改配置

3、启动

4、 验证

5、shell 脚本

二、启动Hadoop

三、HBase

1、安装

2、配置

3、启动

4、验证

四、Phoenix

安装配置

启动 

 相关shell 命令


一、zookeeper 安装配置

1、安装

下载 apache-zookeeper-3.6.3-bin.tar.gz

我这里直接从本机复制到Docker容器中,使用VM虚拟机的话请使用 rz 上传。

# 格式为:docker cp 本地文件的路径 container_id:<docker容器内的路径>
docker cp /Volumes/Linux/apache-zookeeper-3.6.3-bin.tar.gz  hadoop-master:/opt/

解压

tar -xzvf apache-zookeeper-3.6.3-bin.tar.gz
mv apache-zookeeper-3.6.3-bin zk

配置环境变量

vi  /etc/profile

在文件尾部添加配置

export ZOOKEEPER_HOME=/opt/zk
export PATH=$ZOOKEEPER_HOME/bin:$PATH

退出保存,再使配置生效

source /etc/profile

2、修改配置

进入安装目录的 conf/ 目录下,拷贝配置样本并进行修改:

cd $ZOOKEEPER_HOME/conf
cp zoo_sample.cfg  zoo.cfg
vi zoo.cfg

指定数据存储目录和日志文件目录(目录不用预先创建,程序会自动创建),修改后完整配置如下:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zk/data
dataLogDir=/opt/zk/log
clientPort=2181

# 指名集群间通讯端口和选举端口,有几个集群写几个
# server.A=B:C:D 
# A是一个数字,代表这是第几号服务器(此标识需写到对应机器的dataDir目录下myid文件中);
# B是服务器的IP地址;
# C是服务器与集群leader交换信息的端口;
# D是用来执行选举时服务器相互通信的端口。

server.1=node1:2287:3387
server.2=node2:2287:3387
server.3=node3:2287:3387

配置参数说明:

  • tickTime:用于计算的基础时间单元。比如 session 超时:N*tickTime;
  • initLimit:用于集群,允许从节点连接并同步到 master 节点的初始化连接时间,以 tickTime 的倍数来表示;
  • syncLimit:用于集群, master 主节点与从节点之间发送消息,请求和应答时间长度(心跳机制);
  • dataDir:数据存储位置;
  • dataLogDir:日志目录;
  • clientPort:用于客户端连接的端口,默认 2181

同时复制下发(记得生成对应的myid,按照上面zoo.cfg 中的配置一样)

scp $ZOOKEEPER_HOME/conf/zoo.cfg  node1:$ZOOKEEPER_HOME/conf/
scp $ZOOKEEPER_HOME/conf/zoo.cfg  node2:$ZOOKEEPER_HOME/conf/
scp $ZOOKEEPER_HOME/conf/zoo.cfg  node3:$ZOOKEEPER_HOME/conf/

# 创建对应的myid
ssh node1 'mkdir -p $ZOOKEEPER_HOME/data/; echo "1" > $ZOOKEEPER_HOME/data/myid'
ssh node2 'mkdir -p $ZOOKEEPER_HOME/data/; echo "2" > $ZOOKEEPER_HOME/data/myid'
ssh node3 'mkdir -p $ZOOKEEPER_HOME/data/; echo "3" > $ZOOKEEPER_HOME/data/myid'

3、启动

由于已经配置过环境变量,直接使用下面命令启动即可:

zkServer.sh start

# 全启动
ssh node1 'zkServer.sh start'
ssh node2 'zkServer.sh start'
ssh node3 'zkServer.sh start'

4、 验证

使用 JPS 验证进程是否已经启动,出现 QuorumPeerMain 则代表启动成功。

# jps 查看zookeeper 启动并不保险,最好用 zkServer.sh status
[root@hadoop-master bin]# jps
3814 QuorumPeerMain

# 全查看
ssh node1 'zkServer.sh status'
ssh node2 'zkServer.sh status'
ssh node3 'zkServer.sh status' 

5、shell 脚本

不想用命令行的,可以用脚本

vim nodes

# 将zk节点的host写入其中
node1
node2
node3

# 保存退出

 编写 zk shell 脚本 : vim zkall.sh

#!/bin/bash

param=$1

func_zk () 
{
	for host in `cat ./nodes`
  do
    echo "host: ${host} zookeeperServer: ${param}ing…"
    ssh $host " source /etc/profile; $ZK_HOME/bin/zkServer.sh $param "
  done
}
func_zk

if [ $param == "start" -o $param == "stop" ]
then 
	sleep 2
	param = status
  func_zk
fi

 权限设置

chmod 777 zkall.sh
chmod 777 nodes

使用 zkall.sh start,再用 zkall.sh status 查看zk集群状态

这样zookeeper 集群就启动成功了。

二、启动Hadoop

详细请见:在虚拟机或Docker中搭建大数据伪分布式集群(一):hadoop基础功能——hdfs 与 yarn_tangguoxing000的博客-CSDN博客

只在主节点 hadoop-master 执行

vim $HADOOP_HOME/etc/hadoop/workers
 
# 添加DataNode,hadoop-master根据需要,可写可不写,尤其是DataNode偏多时,不要写
hadoop-master
hadoop-master2
hadoop-slave1
hadoop-slave2
hadoop-slave3
# 保存退出

# 格式化初始化 hadoop
hadoop namenode -format

# 启动
$HADOOP_HOME/sbin/start-all.sh

三、HBase

注意:Hadoop与Hbase版本对应关系
安装前记得查看当前的hadoop、hbase版本,保证hadoop和hbase版本兼容的情况下,根据hbase版本选择phoenix版本。

要获取版本对应关系信息可以从官网查看:http://hbase.apache.org/book.html,进入后搜索Hadoop version support matrix可以快速找到对应内容。

截止2021-09-18,版本对应关系如下:

1、安装

下载 hbase-2.3.2-bin.tar.gz 并解压,我是直接从本机复制到Docker机器中

# 格式为:docker cp 本地文件的路径 container_id:<docker容器内的路径>
docker cp /Volumes/Linux/hbase-2.3.2-bin.tar.gz  node1:/opt/

解压

tar -xzvf hbase-2.3.2-bin.tar.gz
mv hbase-2.3.2 hbase

配置环境变量

vi  /etc/profile

在文件尾部添加配置

export HBASE_HOME=/opt/hbase
export PATH=$PATH:$HBASE_HOME/bin

退出保存,再使配置生效

source /etc/profile
# 验证
hbase version

2、配置

cd $HBASE_HOME/conf

修改hbase.env.sh

# 添加或修改
export JAVA_HOME=/opt/jdk8

# 放开注释, 如果为true,表示hbase使用自带的zookeeper,这种只适合单机模式
export HBASE_MANAGES_ZK=false

# 添加 Hadoop 配置文件的位置信息
export HBASE_CLASSPATH=/opt/hadoop/etc/hadoop

hbase-site.xml

<configuration>
    <!-- hbase在hdfs上的存储路径 ip:port要和hadoop/core-site.xml中的fs.defaultFS保持一致 -->
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://node1:8020/hbase</value>
    </property>
    <property>
        <name>hbase.tmp.dir</name>
        <value>../tmp</value>
    </property>
    <!-- 指定hbase为分布式的 -->
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <!-- 在分布式情况下, 一定设置为false -->
    <property>
        <name>hbase.unsafe.stream.capability.enforce</name>
        <value>false</value>
    </property>
    <!-- 指定zk的地址,多个用逗号分隔 -->
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>node1,node2,node3:2181</value>
    </property>
    <!-- ZooKeeper的zoo.conf中的配置 -->
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/opt/zk/data</value>
    </property>
</configuration>

修改regionservers,添加集群中需要启动的Regionserver机器,同hdfs的从节点的主机名

node1
node2
node3

3、启动

直接在第一台主节点启动HBase就可以

注意:

完整启动顺序

(1)启动zookeeper:zkServer.sh start  (尤其是hadoopHA 高可用模式下,必须是zk先启动)

(2)启动hadoop:start-all.sh

(3)启动hbase:start-hbase.sh (可在任意节点执行,在哪启动,哪就为master)

备注:单独启动一个master:hbase-deamon.sh start master  其实就是就是启动一个backup,在hbase中可以启动多个master,但是只有一个acitvite,其它的全部是backup。

完整关闭顺序:与启动相反,先开者后关

(1)启动hbase:stop-hbase.sh

(2)启动hadoop:stop-all.sh

(3)启动zookeeper:zkServer.sh stop

# 启动HBase集群:
bin/start-hbase.sh

# 单独启动一个HMaster进程:
bin/hbase-daemon.sh start master

# 单独停止一个HMaster进程:
bin/hbase-daemon.sh stop master

# 单独启动一个HRegionServer进程:
bin/hbase-daemon.sh start regionserver

# 单独停止一个HRegionServer进程:
bin/hbase-daemon.sh stop regionserver

4、验证

vm虚拟机访问

http://node1:16010

docker 访问

http://localhost:16010

出现页面如下:

四、Phoenix

Phoenix是构建在HBase上的一个SQL层,能让我们用标准的JDBC APIs而不是HBase客户端APIs来创建表,插入数据和对HBase数据进行查询。Phoenix完全使用Java编写,作为HBase内嵌的JDBC驱动。Phoenix查询引擎会将SQL查询转换为一个或多个HBase扫描,并编排执行以生成标准的JDBC结果集。

简要来说,phoenix是一个强化hbase查询功能的中间件,内部实际借助了hbase的协处理的功能,正如官网上说的那样,它可以将hbase转化成关系型数据库,当然它也支持大部分关系型数据库的功能。

从Phoenix下载地址查看对应的版本:Phoenix Downloads | Apache Phoenix

安装配置

下载后上传,并解压改名

tar -zxvf phoenix-hbase-2.3-5.1.2-bin.tar.gz
mv phoenix-hbase-2.3-5.1.2-bin phoenix-5.1.2

配置环境变量

vi /etc/profile

# 文件尾部添加
export PHOENIX_HOME=/opt/phoenix-5.1.2
export PATH=$PHOENIX_HOME/bin:$PATH

# 保存退出,激活配置
source /etc/profile

将 $PHOENIX_HOME/bin下的 phoenix-5.0.0-HBase-2.0-server.jar 放到 $HBASE_HOME/lib

(如果是集群,需要复制到每台机器)

将hadoop/hbase相关配置文件拷贝到 $PHOENIX_HOME/bin 目录下,并复制到各节点上:

cp $HADOOP_HOME/etc/hadoop/hdfs-site.xml $PHOENIX_HOME/bin

cp $HADOOP_HOME/etc/hadoop/core-site.xml $PHOENIX_HOME/bin

cp $HBASE_HOME/conf/hbase-site.xml $PHOENIX_HOME/bin

当然,最好使用软连接的方式将配置文件放到 $PHOENIX_HOME/bin 目录下

ln -s $HADOOP_HOME/etc/hadoop/hdfs-site.xml $PHOENIX_HOME/bin/hdfs-site.xml

ln -s $HADOOP_HOME/etc/hadoop/core-site.xml $PHOENIX_HOME/bin/core-site.xml

ln -s $HBASE_HOME/conf/hbase-site.xml $PHOENIX_HOME/bin/hbase-site.xml

重启hbase,进入hbase shell

disable 'SYSTEM:CATALOG'
snapshot 'SYSTEM:CATALOG','cata_tableSnapshot'
clone_snapshot 'cata_tableSnapshot','SYSTEM.CATALOG'
drop 'SYSTEM:CATALOG'

启动 

# 进入phoenix下的bin目录
cd $PHOENIX_HOME/bin

# 启动
./sqlline.py node1,node2,node3:2181

显示如下: 

 相关shell 命令

# 显示表
> !tables

# 查看表信息
> !describe tables_name

# 退出命令行
> !quit
 
# 或者这个退出命令行
> !exit

# 删除表
> DROP TABLE tables_name;

远程客户端连接:Phoenix组件安装及使用DBeaver工具进行远程连接_程序猿丶HLK-CSDN博客

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值