时间:2021-07-01 10:21:17 帮助过:25人阅读
因为这个vm本人也用来学习docker,所以主机名就改为docker了。
3). centos里安装jdk
下载一个rpm形式的jdk, 然后
# rpm -ivh jdk-8u101-linux-x64.rpm
其它如.tar.gz形式也无所谓,安装就行了。
2. 安装hbase
本地模式是指底层的文件系统不是使用HDFS,而是直接使用OS的本地文件系统。
1). 下载
下载hbase-1.2.6, 这个去hbase.apache.org去下载就好了,可以在win10里下,再copy进centos,也可以直接在centos里下
# wget ...
下载zookeeper-3.4.6,这个下载后只要解压即可,放在/opt/zookeeper-3.4.6
2). 解压
假设文件在/opt/hbase-1.2.6.tar.gz # cd /opt # tar zvxf hbase-1.2.6.tar.gz
则hbase解压后位于/opt/hbase-1.2.6
3). 配置
本机运行,需要配置两个文件: conf/hbase-env.sh, conf/hbase-site.xml
conf/hbase-env.sh
依据你的JDK的位置,配置JAVA_HOME
# cd /opt/hbase-1.2.6 # vi conf/hbase-env.sh ... export JAVA_HOME=/usr/java/latest ...
conf/hbase-site.xml
# vi conf/hbase-site.xml <configuration> <property> <name>hbase.rootdir</name> <value>file:///opt/hbase-1.2.6/data/hbase</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/opt/hbase-1.2.6/data/zookeeper</value> </property> </configuration>
再新建两个目录, 用于保存数据
# cd /opt/hbase-1.2.6 # mkdir -p data/hbase # mkdir data/zookeeper
4). 运行
运行后,可以在浏览器里打开hbase的web ui -> http://192.168.1.135:16010
因为本地模式zookeeper是运行于hbase的jvm内,使用 jps命令看不到zookeeper的进程,此时可以使用下载的zookeeper连接查看:
# cd /opt/zookeeper-3.4.6 # bin/zkCli.sh
这样就连接到zookeeper,可以查看master的地址:
如果不改主机名, centos默认是localhost, 那么红框这个地方就是localhost。
停止运行:
5). hbase shell访问
新建表,表名:test,列族:cf
然后向test表中put一行: rowkey: "row1", 列:a, 即cf:a, 值:"value1"
然后通过get查询,结果如下图:
二. 远程访问
“远程”,是指访问的程序不运行于hbase运行的centos中, 换句话说,就是访问程序和hbase运行的vm用的是两个IP。(比如我的win10: 192.168.1.102, vm: 192.168.1.135)
在eclipse里新建java工程,普通的java工程,只使用main()运行。
然后在工程目录下建一个目录: lib,与src同级,将vm中hbase-1.2.6/lib目录下的所有jar,全部复制放到eclipse的lib里,设置eclipse 工程的build路径,添加lib里的所有jar,这个应该搞 java都知道。
工程目录结构:
TestConnection.java
package ex1; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.Table; import org.apache.hadoop.hbase.util.Bytes; public class TestConnection { public static Configuration configuration; static{ configuration = HBaseConfiguration.create(); configuration.set("hbase.zookeeper.quorum", "192.168.1.135") ; System.out.println("==============="); } public static void main(String[] args) throws Exception { Connection conn = ConnectionFactory.createConnection(configuration); Table table = conn.getTable(TableName.valueOf("test")); Get get = new Get(Bytes.toBytes("row1")); get.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("a")); Result r = table.get(get); if(r.isEmpty()) { System.out.println("result is null"); } System.out.println("result=" + new String(r.value())); conn.close(); } }
运行程序前,要改win10的 /etc/hosts文件(C:\Windows\System32\drivers\etc\hosts),添加如下行:
192.168.1.135 docker
改完这个文件后, web ui也可以这样访问了 -> http://docker:16010
运行结果:
3. 总结:
其实说了这么多, 捞干的说就是: hbase的本地模式使用主机名作为地址。
而hbase client(即eclipse中的代码)是通过zookeeper中的地址(就是画红框的那个地方)访问hbase的,如果zookeeper保存的是localhost, 而localhost的ip是127.0.0.1,
那么就变成了访问win10自己了,就不是访问centos了。
改vm的主机名,就是让这个名字仅是个名字,这样才可以关联其它IP,而不是127.0.0.1。
hbase (local mode) remote access
标签:cto init add 打开 代码 图片 laptop eof 安装jdk