1.下载hadoop-2.7.3,hbase-2.0.6,phoenix-5.0.0-hbase-2.0
下载地址 (下载速度很慢)
hbase http://archive.apache.org/dist/hbase/2.0.6/hbase-2.0.6-bin.tar.gz
2.安装hadoop(站内搜索安装方式)
3.安装hbase
解压后修改配置文件 <hbase_home>/conf/hbase-env.sh 添加jdk依赖,设置是否使用单机的zookeeper
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_251
export HBASE_MANAGES_ZK=false
修改配置文件<hbase_home>/conf/hbase-site.xml
<configuration>
<property>
<!--配置hdfs地址-->
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
<property>
<!-- 指定 hbase 是分布式的,分布式才能使用外部的zookeeper -->
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<!--设置zk地址-->
<name>hbase.zookeeper.quorum</name>
<value>bigdata01</value>
</property>
<property>
<!--设置zookeeper端口-->
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<!--设置主节点访问端口-->
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
</configuration>
配置数据存储节点配置文件 <hbase_home>/conf/regionservers
集群服务器ip1
集群服务器ip2
集群服务器ip3
将hbase根目录分别分发到所有数据节点中
scp -r <hbase_home> 集群服务器ip2:$PWD
scp -r <hbase_home> 集群服务器ip3:$PWD
启动 / 停止hbase
<hbase_home>/bin/start-hbase.sh
# 不用停止
<hbase_home>/bin/stop-hbase.sh
jps检查节点状态
主节点 HMaster
数据节点 HRegionServer
进入控制台
<hbaes_home>/bin/hbase shell
访问web管理页面 http://服务器集群ip1:60010
4.安装phoenix (phoenix依赖python2 ,如果安装了python3需要卸载)
将hbase的配置文件<hbase_home>/conf/hbase-site.xml、 <hadoop_home>/etc/hadoop下的core-site.xml 、hdfs-site.xml放到<phoenix_home>/bin/下,替换phoenix原来的配置文件。
将<phoenix_home>/phoenix-5.0.0-HBase-2.0-server.jar与<phoenix_home>/phoenix-core-5.0.0-HBase-2.0.jar拷贝到<hbase_home>/lib目录下
cp <phoenix_home>/phoenix-5.0.0-HBase-2.0-server.jar <hbase_home>/lib/
cp <phoenix_home>/phoenix-core-5.0.0-HBase-2.0.jar <hbase_home>/lib/
完成之后重启hbase
连接phoenix
<phoenix_home>/bi/sqlline.py zookeeper地址:2181
查看元数据
!tables
退出
!exit
5.使用phoenix创建表并插入数进行查询 (主键表示rowkey)
create table tB_name(rowkey varchar not null primary key,f1 varchar,f2 varchar,f3 varchar);
upsert into tB_name values ('rowkey0001','a','b','c');
upsert into tB_name values ('rowkey0002','a2','b2','c2');
检查插入的结果
select * from tB_name;
通过hbase检查插入的结果
# 登录控制台
<hbase_home>/bin/hbase shell
# 查看所有表列表
list
# 查看表数据
scan "TB_NAME"
6.使用java代码连接phoenix
pom依赖
<dependency>
<groupId>org.apache.phoenix</groupId>
<artifactId>phoenix-core</artifactId>
<version>5.0.0-HBase-2.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.3</version>
</dependency>
代码
import java.sql.*;
import java.util.ArrayList;
public class PhoneixClient {
public static void main(String[] args) throws Exception {
Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");//添加驱动
Connection conn = DriverManager.getConnection("jdbc:phoenix:192.168.235.113:2181");
Statement stat = conn.createStatement();
String sql1="select * from tB_name";
ResultSet rs = stat.executeQuery(sql1);
ResultSetMetaData metaData = rs.getMetaData();
ArrayList<String> keys = new ArrayList<>(metaData.getColumnCount());//记录字段信息
for (int i = 0; i < metaData.getColumnCount(); i++) {
keys.add(metaData.getColumnName(i + 1));//获取字段从1开始
}
while (rs.next()) {
for (String key : keys) {
String value = rs.getString(key);
System.out.print(key+":"+value+" ");
}
System.out.println();
}
stat.close();//回收资源
rs.close();
conn.close();
}
}
运行结果(因为没有在resource目录下放入log4j日志配置文件,所以提示了警告信息,不影响结果)