一,hbase安装
1、安装Hbase前需要:Hadoop安装并启动集群,zookeeper安装并启动集群,SSH免密登录
2、解压Hbase文件并重命名
?? ?cd /opt/soft/
?? ?tar -zxvf /mysoft/hbase-1.3.1-bin.tar.gz -C /opt/soft/
?? ?mv /opt/soft/hbase-1.3.1 hbase
3、配置环境变量,并使环境变量生效
?? ?vim /etc/profile
?? ?export HBASE_HOME=/opt/soft/hbase
?? ?export PATH=$HBASE_HOME/bin:$PATH
4、修改Hbase配置文件
?? ?vim /opt/soft/hbase/conf/hbase-env.sh
?? ?export JAVA_HOME=/opt/soft/jdk
?? ?export HBASE_MANAGES_ZK=true
?? ?export HBASE_PID_DIR=/opt/soft/hbase/pids
?? ?并注释掉以下两行配置
?? ?# export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
?? ?# export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
?? ?vim /opt/soft/hbase/conf/hbase-site.xml
?? ?<configuration>
? ? ? ? <!--这个目录是region server的共享目录,用来持久化HBase-->
? ? ? ? <property>
? ? ? ? ? ? ? ? <name>hbase.rootdir</name>
? ? ? ? ? ? ? ? <value>hdfs://master:9000/hbase</value>
? ? ? ? </property>
? ? ? ? <!--HBase的运行模式。false是单机模式,true是分布式模式-->
? ? ? ? <property>
? ? ? ? ? ? ? ? <name>hbase.cluster.distributed</name>
? ? ? ? ? ? ? ? <value>true</value>
? ? ? ? </property>
? ? ? ? <!--Zookeeper集群的地址列表,用逗号分割-->
? ? ? ? <property>
? ? ? ? ? ? ? ? <name>hbase.zookeeper.quorum</name>
? ? ? ? ? ? ? ? <value>master,slave01,slave02</value>
? ? ? ? </property>
?? ?</configuration>
?? ?vim /opt/soft/hbase/conf/regionservers
?? ?slave01
?? ?slave02
5、将配置好的Hbase和环境变量传到其他两台机器
?? ?scp -r /opt/soft/hbase root@slave01:/opt/soft/hbase
?? ?scp -r /opt/soft/hbase root@slave02:/opt/soft/hbase
?? ?scp /etc/profile root@slave01:/etc/profile
?? ?scp /etc/profile root@slave02:/etc/profile
6、启动Hbase
?? ?start-hbase.sh
?? ?出现一下信息为hbase部署成功
?? ?master: starting zookeeper, logging to /opt/soft/hbase/bin/../logs/hbase-root-zookeeper-master.out
?? ?slave02: starting zookeeper, logging to /opt/soft/hbase/bin/../logs/hbase-root-zookeeper-slave02.out
?? ?slave01: starting zookeeper, logging to /opt/soft/hbase/bin/../logs/hbase-root-zookeeper-slave01.out
?? ?starting master, logging to /opt/soft/hbase/logs/hbase-root-master-master.out
?? ?slave01: starting regionserver, logging to /opt/soft/hbase/bin/../logs/hbase-root-regionserver-slave01.out
?? ?slave02: starting regionserver, logging to /opt/soft/hbase/bin/../logs/hbase-root-regionserver-slave02.out
7、查看集群信息
?? ?登录 http://192.168.85.80:16010/master-status 这个页面,查看集群启动信息
?
二,hbase测试题
1.新建一个maven项目,1.8jdk
?
2.修改maven库:
?
3.编辑项目POM文件添加hbase配置:
?dependencies>
?
? ? ? ? <dependency>
? ? ? ? ? ? <groupId>org.apache.hbase</groupId>
? ? ? ? ? ? <artifactId>hbase-server</artifactId>
? ? ? ? ? ? <version>1.3.1</version>
? ? ? ? </dependency>
?
? ? ? ? <dependency>
? ? ? ? ? ? <groupId>org.apache.hbase</groupId>
? ? ? ? ? ? <artifactId>hbase-client</artifactId>
? ? ? ? ? ? <version>1.3.1</version>
? ? ? ? </dependency>
?
? ? </dependencies>
?
4.刷新maven项目
?
5.编写Hbase_DDL类以及To_Hbase类
?
6.Hbase_DDL类中需要有四个方法:
? ? 1)新建空间方法
? ? 2)列出空间方法
? ? 3)新建表方法
? ? 4)列出表方法
?
?
三,hbase ddl
import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.*;import org.apache.hadoop.hbase.client.*;import java.io.IOException;public class Hbase_DDL { public void Createtable() throws IOException { //1.创建Hbase zookeeper 配置 Configuration configuration = HBaseConfiguration.create(); configuration.set("hbase.zookeeper.quorum", "master,slave01,slave02"); //2.获取与HBase的连接 Connection connection = ConnectionFactory.createConnection(configuration); //3.获取DDL操作对象 Admin admin = connection.getAdmin(); //4.创建表的方法 HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf("my_namespace1:my_table1")); System.out.println("定义表结构完成"); tableDescriptor.addFamily(new HColumnDescriptor("my_col1")); System.out.println("定义字段完成"); admin.createTable(tableDescriptor); System.out.println("创建表完成"); //5.关闭连接 admin.close(); connection.close(); } public void Listnamespace() throws IOException { //1.创建Hbase zookeeper 配置 Configuration configuration = HBaseConfiguration.create(); configuration.set("hbase.zookeeper.quorum", "master,slave01,slave02"); //2.获取与HBase的连接 Connection connection = ConnectionFactory.createConnection(configuration); //3.获取DDL操作对象 Admin admin = connection.getAdmin(); //4.加载列出空间名的方法 NamespaceDescriptor[] namespaceDescriptors = admin.listNamespaceDescriptors(); for (int i = 0; i < namespaceDescriptors.length; i++) { System.out.println(namespaceDescriptors[i]); } //5.关闭连接 admin.close(); connection.close(); } public void Creartenamespace() throws IOException { //1.创建Hbase zookeeper 配置 Configuration configuration = HBaseConfiguration.create(); configuration.set("hbase.zookeeper.quorum", "master,slave01,slave02"); //2.获取与HBase的连接 Connection connection = ConnectionFactory.createConnection(configuration); //3.获取DDL操作对象 Admin admin = connection.getAdmin(); //4.加载创建空间的方法// admin.createNamespace(NamespaceDescriptor.create("my_namespace").build()); admin.createNamespace(NamespaceDescriptor.create("my_namespace1").build()); //5.关闭连接 admin.close(); connection.close(); } public void listname() throws IOException { //1.创建Hbase zookeeper 配置 Configuration configuration = HBaseConfiguration.create(); configuration.set("hbase.zookeeper.quorum", "master,slave01,slave02"); //2.获取与HBase的连接 Connection connection = ConnectionFactory.createConnection(configuration); //3.获取DDL操作对象 Admin admin = connection.getAdmin(); //4.加载列出表名的方法 TableName[] tableNames = admin.listTableNames(); //5.遍历数组,输出表名 for (int i = 0; i < tableNames.length; i++) { System.out.println(tableNames[i]); } //5.关闭连接 admin.close(); connection.close(); }}
?
四,hbase
port java.io.IOException;public class Hbase { public static void main(String[] args) throws IOException { //新建一个类对象 Hbase_DDL hd = new Hbase_DDL(); //调用对象的方法// hd.Listnamespace();// hd.Createtable();// hd.listname();// hd.Creartenamespace(); }}