分布式环境
继 安装 HA 模式 HDFS 集群 准备分布式环境。
host | NN | DN | ZK | HMaster | HRegionServer |
---|---|---|---|---|---|
node01 | * | ||||
node02 | * | ||||
node03 | * | ||||
node04 | * | ||||
node05 | * | ||||
node06 | * | * | * | ||
node07 | * | * | |||
node08 | * | * | * |
1. HBASE 应用部署
1.1 安装应用
https://archive.apache.org/dist/hbase/2.1.10/hbase-2.1.10-bin.tar.gz
创建安装目录
[root@node06 ~]# for i in `seq 6 8`;do ssh root@node0$i "mkdir -p /opt/bigdata";done
分发到安装目录
[root@node06 ~]# for i in `seq 6 8`;do ssh root@node0$i "curl https://archive.apache.org/dist/hbase/2.1.10/hbase-2.1.10-bin.tar.gz | tar -C /opt/bigdata -zxf -";done
更改应用文件属主属组
[root@node06 ~]# for i in `seq 6 8`;do ssh root@node0$i "chown -R root:root /opt/bigdata/hbase-2.1.10";done
分发配置环境变量配置文件
[root@node06 ~]# for i in `seq 6 8`;do ssh root@node0$i "sed -i '\$a\#Hbase Environment variables\nexport HBASE_HOME=/opt/bigdata/hbase-2.1.10\nexport PATH=\$PATH:\$HBASE_HOME/bin' /etc/profile";done [root@node06 ~]# for i in `seq 6 8`;do ssh root@node0$i "tail -n3 /etc/profile";done [root@node06 ~]# for i in `seq 6 8`;do ssh root@node0$i "source /etc/profile";done
1.2 配置应用
配置hbase-env.sh文件
[root@node06 conf]# pwd /opt/bigdata/hbase-2.1.10/conf [root@node06 conf]# vim hbase-env.sh ... export JAVA_HOME=/usr/java/default ... export HBASE_MANAGES_ZK=false #配置使用HBASE集群外zookeeper ...
配置 hbase-site.xml 文件
[root@node06 conf]# pwd /opt/bigdata/hbase-2.1.10/conf [root@node06 conf]# vim hbase-site.xml ... <configuration> <property> <name>hbase.rootdir</name> <value>hdfs://mycluster/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>node06,node07,node08</value> </property> </configuration>
修改 regionservers 文件,设置 regionserver 分布在哪几台节点
[root@node06 conf]# vim regionservers node06 node07 node08
创建 backup-masters 文件,并添加如下内容,指定 HMaster 备用节点
[root@node06 conf]# vim backup-masters node08
创建 hdfs-site.xml 文件的软链接到 conf 目录下
[root@node06 conf]# ln -s ../../hadoop-2.6.5/etc/hadoop/hdfs-site.xml .
分发配置文件
[root@node06 conf]# for i in `seq 7 8`;do scp hbase-env.sh root@node0$i:/opt/bigdata/hbase-2.1.10/conf/;done [root@node06 conf]# for i in `seq 7 8`;do scp hbase-site.xml root@node0$i:/opt/bigdata/hbase-2.1.10/conf/;done [root@node06 conf]# for i in `seq 7 8`;do scp regionservers root@node0$i:/opt/bigdata/hbase-2.1.10/conf/;done [root@node06 conf]# for i in `seq 7 8`;do scp backup-masters root@node0$i:/opt/bigdata/hbase-2.1.10/conf/;done [root@node06 conf]# for i in `seq 7 8`;do rsync -avzP hdfs-site.xml root@node0$i:/opt/bigdata/hbase-2.1.10/conf/;done
替换 hadoop 中老旧的 jline-0.9.94.jar
[root@node06 ~]# for i in `seq 6 8`;do ssh root@node0$i rm /opt/bigdata/hadoop-2.6.5/share/hadoop/yarn/lib/jline-0.9.94.jar;done [root@node06 ~]# for i in `seq 6 8`;do ssh root@node0$i "scp root@node01:/opt/bigdata/hive-2.3.4/lib/jline-2.12.jar /opt/bigdata/hadoop-2.6.5/share/hadoop/yarn/lib/";done
解决
java.lang.ClassNotFoundException: org.apache.htrace.SamplerBuilder
异常的问题
[root@node06 ~]# for i in `seq 6 8`;do ssh root@node0$i cp /opt/bigdata/hbase-2.1.10/lib/client-facing-thirdparty/htrace-core-3.1.0-incubating.jar /opt/bigdata/hbase-2.1.10/lib/;done
2. 启动 HBASE 集群
2.1 HDFS 创建 hbase.rootdir 目录
注意在 god 用户下执行,节点无所谓。因为我们在 root 用户下启动 hbase,需要授权给 root 用户
[god@node01 ~]$ hdfs dfs -mkdir /hbase [god@node01 ~]$ hdfs dfs -chown -R root /hbase
2.1 启动应用
在 node06 节点启动 hbase
[root@node06 ~]# start-hbase.sh
[root@node06 ~]# jps 14625 HRegionServer 14338 ZooKeeperMain 20325 JournalNode 14822 Jps 19496 QuorumPeerMain 21003 ResourceManager 14495 HMaster
[root@node07 ~]# jps 17702 HRegionServer 18518 ResourceManager 21895 QuorumPeerMain 17831 Jps 30570 JournalNode
[root@node08 ~]# jps 15747 HMaster 15975 Jps 15673 HRegionServer 27355 JournalNode 21566 QuorumPeerMain
查看 Web UI
2.2 测试 hbase
[root@node06 ~]# hbase shell ... hbase(main):001:0> status 1 active master, 1 backup masters, 3 servers, 0 dead, 0.6667 average load Took 0.1172 seconds
package com.zk8s.hbase; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.*; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.io.IOException; public class HBaseDemo { Configuration conf = null; Connection conn = null; // 表管理对象 Admin admin = null; // 创建表对象 TableName tableName = TableName.valueOf("phone"); @Before public void init() throws IOException { // 创建配置文件对象 conf = HBaseConfiguration.create(); // 加载zk配置 conf.set("hbase.zookeeper.quorum","node06,node07,node08"); // 获取连接 conn = ConnectionFactory.createConnection(conf); // 获取对象 admin = conn.getAdmin(); } @Test public void createTable() throws IOException { // 定义表描述对象 TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(tableName); // 定义列族描述对象 ColumnFamilyDescriptorBuilder columnFamilyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder("cf".getBytes()); // 添加列族信息给表 tableDescriptorBuilder.setColumnFamily(columnFamilyDescriptorBuilder.build()); // 创建表 admin.createTable(tableDescriptorBuilder.build()); } @After public void destory() { try { admin.close(); } catch (IOException e) { e.printStackTrace(); } try { conn.close(); } catch (IOException e) { e.printStackTrace(); } } }
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于