伪分布式Hadoop+Hbase+Phoenix

一、OS环境准备

1.主机名

# vim /etc/hosts
10.10.100.240   phoenix

2.ssh登录互信认证

# ssh-keygen -t rsa                    一路回车
# cd /root/.ssh/
# cat id_rsa.pub >>authorized_keys     配置本机互信

# ssh-copy-id  其他节点的hostname        与其他设备互信命令(多节点时使用)

3.关闭防火墙

# systemctl stop {iptables,firewalld}
# systemctl disable {iptables,firewalld}

4.关闭selinux

永久关闭:

# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

临时关闭:

# setenforce 0
# getenforce        查看selinux状态

二、配置JAVA环境

1. 下载jdk包:https://www.oracle.com/java/technologies/downloads/

可以通过Java archive查找jdk8版本使用,较为经典稳定

2.配置java环境,解压jdk安装包到 /usr/local 目录下,配置环境变量

# tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/local/
# vim /etc/profile
在文件尾部添加如下内容
#/usr/local/jdk1.8.0_221/
export JAVA_HOME=/usr/local/jdk1.8.0_221/
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# source /etc/profile

3.查看java环境是否配置成功

三、配置伪分布式Hadoop环境

1.下载包:http://archive.apache.org/dist/hadoop/core/hadoop-3.2.3/

2.解压hadoop安装包到 /home 目录下

# tar -zxvf hadoop-3.2.3.tar.gz -C /home/

3.创建hadoop用户,指定家目录为/home/hadoop-3.2.3/

# useradd -u hadoop -d /home/hadoop-3.2.3/
# chown -R hadoop.hadoop /home/hadoop-3.2.3/
# chmod -R 755 /home/hadoop-3.2.3/

 4.修改 hadoop 配置文件,配置hadoop需要使用的java环境

# vim /home/hadoop-3.2.3/etc/hadoop/hadoop-env.sh
大概55行配置:
export JAVA_HOME=/usr/local/jdk1.8.0_221/
# vi /home/hadoop-3.2.3/etc/hadoop/hdfs-site.xml
<configuration>

<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop-3.2.3/data/dfs/name</value>
</property>

<property>
<name>dfs.datanode.name.dir</name>
<value>file:/home/hadoop-3.2.3/data/dfs/data</value>
</property>

<property>
<name>dfs.replication</name>
<value>1</value>
</property>

<property>
<name>dfs.permissions</name>
<value>1</value>
</property>

</configuration>
# vim /home/hadoop-3.2.3/etc/hadoop/core-site.xml

<configuration>

<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop-3.2.3/data/tmp</value>
</property>

<property>
<name>fs.defaultFS</name>
<value>hdfs://phoenix:9000</value>
</property>

<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>

<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>

</configuration>
# vim /home/hadoop-3.2.3/etc/hadoop/slaves
写入
phoenix

5.修改 hadoop 环境变量

# vim /etc/profile
export HADOOP_HOME=/home/hadoop-3.2.3
export PATH=$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH
# source /etc/profile

6.格式化并启动 hadoop

格式化命令只能 1 次,多次执行就会造成 namenode 与 datanode 的 ID 值不一致,namenode 无法启动

# hdfs namenode -format        或者
# hadoop namenode -format
使用hadoop用户启动
# su - hadoop
如果su进来bash变成如下(说明hadoop用户没有环境变量文件):
-bash-4.2$
解决:
# cp /etc/skel/.bash* /home/hadoop-3.2.3/
重新进入hadoop用户
#su - hadoop
$ start-all.sh

$ jps -ml

7.登录页面查看hdfs

http://10.10.100.240:9870/dfshealth.html#tab-overview

注:

Hadoop2.x的namenode界面访问端口默认是:50070

Hadoop3.x的namenode界面访问端口默认是:9870

可以通过hdfs-site.xml修改

# vim /home/hadoop-3.2.3/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.namenode.http-address</name>
<value>0.0.0.0:50070</value>
</property>

7.登录页面查看hadoop集群

http://10.10.100.240:8088/cluster

四、Hbase部署在伪分布式Hadoop上

注:网上大量的资料说明部署Hbase单机版本不需要使用hadoop组件

1.下载hbase二进制包:https://archive.apache.org/dist/hbase/ ,或者使用wget命令下载:

推荐使用hbase-2.2.4版本

2.解压hbase二进制包到 /home 目录下,配置权限

# tar -zxvf hbase-2.2.4-bin.tar.gz -C /home/
# chown -R hadoop.hadoop /home/hbase-2.2.4/
# chmod -R 755 /home/hbase-2.2.4/

3.设置hbase配置文件,设置hbase运行的java环境

# vim /home/hbase-2.2.4/conf/hbase-env.sh
大概在68行配置
export JAVA_HOME=/usr/local/jdk1.8.0_221/

注:127行的默认配置(# export HBASE_MANAGES_ZK=true)含义为:hbase启动使用自建zookeeper,如果不使用hbase自建的zookeeper,需要额外下载zookeepr包部署。

# vim /home/hbase-2.2.4/conf/hbase-site.xml
添加以下内容
<configuration>

<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hbase-2.2.4/zookeeper</value>
</property>

<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>

<property>
<name>hbase.rootdir</name>
<value>hdfs://phonenix:9000/hbase</value>
</property>

<!--
<property>
<name>dfs.replication</name>
<value>true</value>
</property>
-->

<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>

</configuration>

默认情况下 <configuration></configuration> 节点里面是空的,需要添加 hbase 和 ZooKeeper 数据写入的目录:

提示:这两个目录地址可以根据需求自由设置。另外,这两个文件夹无需事先创建,HBase 会自动创建好。也可以自己创建好

注意ZooKeeper数据文件路径要写,百度上很多教程没写,自带zookeeper没启动,报各种错

# vi /home/hbase-2.2.4/conf/regionservers
写入
phoenix

 4.配置hbase环境变量,启动hbase

# vim /etc/profile
export HBASE_HOME=/home/hbase-2.2.4
export PATH=$HBASE_HOME/bin:$PATH
# source /etc/profile
使用hadoop用户启动
# su - hadoop
$ start-hbase.sh

$ jps -ml

注:一定要使用hadoop用户启动,否则可能会出现 HMaster 或者 HRegionServer 连接不上zookeeper,导致报错HMaster exiting;

如果zookeeper连接不上,建议清空zookeeper配置尝试重新启动 Hbase;

# rm -rf /home/hbase-2.2.4/zookeeper/*

5.登录hbase管理页面

http://10.10.100.240:16010/master-status

注:生产环境最好在防火墙上把2181,16000,16010,16020端口都开放,否则访问ui界面和java api调用不通报各种错

 附:

 1,启动命令行工具

执行如下命令启动 HBase 的 shell 命令行工具:

# hbase shell

  2,创建、查看表

(1)使用 create 命令创建一个新表(这里表名称为 test,列簇名为 cf)

> create 'test', 'cf'

(2)使用 list 命令可以列出所有的表:

> list

(3)使用 describe 命令查看详细信息,包括配置默认值:

> describe 'test'

 3,插入、查询数据

(1)要将数据放入表中,可以使用 put 命令,比如下面命令连续插入 3 条数据:

> put 'test', 'row1', 'cf:a', 'value1'
> put 'test', 'row2', 'cf:b', 'value2'
> put 'test', 'row3', 'cf:c', 'value3'

(2)使用 scan 命令可以查看表中的所有数据:

> scan 'test'

 (3)使用 get 命令则可以获取单行的数据:

> get 'test', 'row1'

 4,禁用、删除表

(1)如果要删除表或更改其设置,以及在某些其他情况下,则需要先使用 disable 命令禁用该表:

> disable 'test'

(2)如果表被禁用,可以使用 enable 命令重新启用它:

> enable 'test'

(3)将表禁用后,我们就可以使用 drop 命令删除表:

> drop 'test'

五、搭建Phoenix

1,什么是 Phoenix?

  • Phoenix 是构建在 HBase 上的一个 SQL 层,能让我们用标准的 JDBC APIs 而不是 HBase 客户端 APIs 来创建表,插入数据和对 HBase 数据进行查询。 
  • Phoenix 完全使用 Java 编写,作为 HBase 内嵌的 JDBC 驱动。Phoenix 查询引擎会将 SQL 查询转换为一个或多个 HBase 扫描,并编排执行以生成标准的 JDBC 结果集。
  • Phoenix 直接使用 HBase API、协同处理器与自定义过滤器,对于简单查询来说,其性能量级是毫秒,对于百万级别的行数来说,其性能量级是秒。 

2,Phoenix 与 HBase 的关系

(1)Phoenix 与 HBase 中的表是独立的,两者之间没有必然的关系。

  • Phoenix 与 HBase 集成后会创建六张系统表:SYSTEM.CATALOG、SYSTEM.FUNCTION、SYSTEM.LOG、SYSTEM.SEQUENCE、SYSTEM.STATS,其中 SYSTEM.CATALOG 表用于存放 Phoenix 创建表时的元数据。
  • Phoenix 创建表时会自动调用 HBase 客户端创建相应的表,并且在 SYSTEM.CATALOG 系统表中记录 Phoenix 创建表时的元数据,其主键的值对应 HBase 的 RowKey,非主键的列对应 HBase 的 Column(列族不指定时为 0,且列会进行编码)

(2)如果是通过 Phoenix 创建的表,那么必须通过 Phoenix 客户端来对表进行操作,因为通过 Phoenix 创建的表其非主键的列会进行编码。

3,准备工作

    由于 Phoenix 是内嵌在 HBase 的 JDBC 驱动,因此我们先要安装 JDK、HBase 和 Zookeeper(以上已经安装好),并配置好 JAVA_HOME 环境变量。

4,下载 Phoenix 安装包

(1)首先访问 Phoenix 官网(https://phoenix.apache.org/download.html)根据 HBase 版本下载相应的安装包:

如果没有上图,就去 Apache Archive 这里下载

 

(2)将下载下来的压缩包上传到 Master 节点(比如 /home 目录下),执行如下命令进行解压:

# tar -zxvf apache-phoenix-5.0.0-HBase-2.0-bin.tar.gz -C /home
# chown -R hadoop.hadoop /home/apache-phoenix-5.0.0-HBase-2.0-bin/
# chmod -R 755 /home/apache-phoenix-5.0.0-HBase-2.0-bin/

(3)接着进入解压后的目录,将目录下的所有 jar 包拷贝到集群中每个节点(主节点也要拷贝)的 hbase 的 lib 目录下: 

注意:网上说只要拷贝 phoenix-5.0.0-HBase-2.0-server.jar 就行了,但我测试发现后面执行 sqlline.py 会一直停在中途,无法成功。同时访问 HBase 的 Web UI 页面可以看到其一直处于 RIT 状态(Regions In Transition)

# cp /home/apache-phoenix-5.0.0-HBase-2.0-bin/*.jar /home/hbase-2.2.4/lib/

(4)同时将 hbase/conf 目录下 hbase-site.xml 文件放到 phoenix 的 bin 目录下:

# cp /home/hbase-2.2.4/conf/hbase-site.xml /home/apache-phoenix-5.0.0-HBase-2.0-bin/bin

5,配置环境变量

(1)执行如下命令编辑 profile 文件:

# vim /etc/profile
# For Phoenix
export PHOENIX_HOME=/home/apache-phoenix-5.0.0-HBase-2.0-bin
export PHOENIX_CLASSPATH=$PHOENIX_HOME
export PATH=$PHOENIX_HOME/bin:$PATH
# source /etc/profile

6,重启 HBase

# stop-hbase.sh
# start-hbase.sh

7,启动 Phoenix 

(1)执行如下命令进入 phoenix 的终端(启动脚本 sqlline.py 参数是 Zookeeper 节点);

# sqlline.py 10.10.100.240:2181

 (2)首次进入 phoenix 终端会自动建立的 phoenix 系统表,我们执行如下命令可以查看当前所有的表:

> !table

 (3)执行如下命令则可退出 phoenix 的终端:

> !exit

 (4)访问 HBase 的 Web UI 页面也可以看到新创建的这些表:

 http://10.10.100.240:16010/master-status

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值