原博客出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/      感谢!

Posted:

Apr 3, 2014

Tags:
Comments:

0 Comments

在Ubuntu中安装HBase

R利剑NoSQL系列文章,主要介绍通过R语言连接使用nosql数据库。涉及的NoSQL产品,包括RedisMongoDBHBaseHiveCassandraNeo4j。希望通过我的介绍让广大的R语言爱好者,有更多的开发选择,做出更多地激动人心的应用。

关于作者:

  • 张丹(Conan), 程序员Java,R,PHP,Javascript
  • weibo:@Conan_Z
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/linux-hbase-install/

前言

HBase是Hadoop家族中的一个分布式数据库产品,HBase支持高并发读写,列式数据存储,高效的索引,自动分片,自动Region迁移等许多优点,已经越来越多的被界业认可并实施。

目录

  1. 在Ubuntu中环境准备
  2. HBase安装
  3. Thrift安装

1 在Ubuntu中环境准备

HBase是基于Java开发的运行Hadoop平台上分布式NoSQL数据库软件,HBase没有提供Windows系统安装版本。我在这里也只介绍HBase在Linux Ubuntu系统中的安装。

由于HBase是运行在Hadoop平台上面的,因此我们需要先安装好Hadoop的环境,Hadoop的安装请参考文章:[Hadoop历史版本安装](http://blog.fens.me/hadoop-history-source-install/)

HBase没有提供apt的软件源安装,我们需要自己去官方网络下载HBase软件包进行安装。HBase下载页:http://www.apache.org/dyn/closer.cgi/hbase/

系统环境:

  • Linux Ubuntu 12.04.2 LTS 64bit server
  • Java JDK 1.6.0_45
  • Hadoop 1.1.2

2 HBase安装

2.1 下载HBase


  1. # 通过wget命令下载
  2. ~ wget http://www.gaidso.com/apache/hbase/stable/hbase-0.94.18.tar.gz
  3. # 解压HBase
  4. ~ tar xvf hbase-0.94.18.tar.gz
  5. # 移动HBase目录到文件夹
  6. ~ mv hbase-0.94.18/ /home/conan/hadoop/
  7. # 进入目录
  8. ~ cd /home/conan/hadoop/hbase-0.94.18

2.2 配置HBase

2.2.1 修改启动文件hbase-env.sh


  1. ~ vi conf/hbase-env.sh
  2. #打开注释
  3. export JAVA_HOME=/home/conan/toolkit/jdk16
  4. export HBASE_CLASSPATH=/home/conan/hadoop/hadoop-1.1.2/conf
  5. export HBASE_MANAGES_ZK=true

2.2.2 修改配置文件 hbase-site.xml


  1. ~ vi conf/hbase-site.xml
  2. <configuration>
  3. <property>
  4. <name>hbase.rootdir</name>
  5. <value>hdfs://master:9000/hbase</value>
  6. </property>
  7. <property>
  8. <name>hbase.cluster.distributed</name>
  9. <value>true</value>
  10. </property>
  11. <property>
  12. <name>dfs.replication</name>
  13. <value>1</value>
  14. </property>
  15. <property>
  16. <name>hbase.zookeeper.quorum</name>
  17. <value>master</value>
  18. </property>
  19. <property>
  20. <name>hbase.zookeeper.property.clientPort</name>
  21. <value>2181</value>
  22. </property>
  23. <property>
  24. <name>hbase.zookeeper.property.dataDir</name>
  25. <value>/home/conan/hadoop/hdata</value>
  26. </property>
  27. </configuration>

复制hadoop环境的配置文件和类库


  1. ~ cp ~/hadoop/hadoop-1.1.2/conf/hdfs-site.xml conf/
  2. ~ cp ~/hadoop/hadoop-1.1.2/hadoop-core-1.1.2.jar lib/
  3. ~ mkdir /home/conan/hadoop/hdata

2.3 启动hadoop和hbase


  1. ~ /home/conan/hadoop/hadoop-1.1.2/bin/start-all.sh
  2. ~ /home/conan/hadoop/hbase-0.94.18/bin/start-hbase.sh
  3. # 查看hbase进程
  4. ~ jps
  5. 13838 TaskTracker
  6. 13541 JobTracker
  7. 15946 HMaster
  8. 16756 Jps
  9. 12851 NameNode
  10. 13450 SecondaryNameNode
  11. 13133 DataNode
  12. 15817 HQuorumPeer
  13. 16283 HRegionServer

2.4 打开HBase命令行客户端访问Hbase


  1. ~ bin/hbase shell
  2. HBase Shell; enter 'help' for list of supported commands.
  3. Type "exit" to leave the HBase Shell
  4. Version 0.94.18, r1577788, Sat Mar 15 04:46:47 UTC 2014
  5. hbase(main):002:0> help
  6. HBase Shell, version 0.94.18, r1577788, Sat Mar 15 04:46:47 UTC 2014
  7. Type 'help "COMMAND"', (e.g. 'help "get"' -- the quotes are necessary) for help on a specific command.
  8. Commands are grouped. Type 'help "COMMAND_GROUP"', (e.g. 'help "general"') for help on a command group.
  9. COMMAND GROUPS:
  10. Group name: general
  11. Commands: status, version, whoami
  12. Group name: ddl
  13. Commands: alter, alter_async, alter_status, create, describe, disable, disable_all, drop, drop_all, enable, enable_all, exists, is_disabled, is_enabled, list, show_filters
  14. Group name: dml
  15. Commands: count, delete, deleteall, get, get_counter, incr, put, scan, truncate
  16. Group name: tools
  17. Commands: assign, balance_switch, balancer, close_region, compact, flush, hlog_roll, major_compact, move, split, unassign, zk_dump
  18. Group name: replication
  19. Commands: add_peer, disable_peer, enable_peer, list_peers, list_replicated_tables, remove_peer, start_replication, stop_replication
  20. Group name: snapshot
  21. Commands: clone_snapshot, delete_snapshot, list_snapshots, restore_snapshot, snapshot
  22. Group name: security
  23. Commands: grant, revoke, user_permission
  24. SHELL USAGE:
  25. Quote all names in HBase Shell such as table and column names. Commas delimit
  26. command parameters. Type after entering a command to run it.
  27. Dictionaries of configuration used in the creation and alteration of tables are
  28. Ruby Hashes. They look like this:
  29. {'key1' => 'value1', 'key2' => 'value2', ...}
  30. and are opened and closed with curley-braces. Key/values are delimited by the
  31. '=>' character combination. Usually keys are predefined constants such as
  32. NAME, VERSIONS, COMPRESSION, etc. Constants do not need to be quoted. Type
  33. 'Object.constants' to see a (messy) list of all constants in the environment.
  34. If you are using binary keys or values and need to enter them in the shell, use
  35. double-quote'd hexadecimal representation. For example:
  36. hbase> get 't1', "key\x03\x3f\xcd"
  37. hbase> get 't1', "key\003\023\011"
  38. hbase> put 't1', "test\xef\xff", 'f1:', "\x01\x33\x40"
  39. The HBase shell is the (J)Ruby IRB with the above HBase-specific commands added.
  40. For more on the HBase Shell, see http://hbase.apache.org/docs/current/book.html

2.5 HBase简单命令操作


  1. #创建一个新表student
  2. hbase(main):003:0> create 'student','info'
  3. 0 row(s) in 1.2680 seconds
  4. #查看所有的表
  5. hbase(main):004:0> list
  6. TABLE
  7. student
  8. 1 row(s) in 0.0330 seconds
  9. #查看student的表结构
  10. hbase(main):005:0> describe 'student'
  11. DESCRIPTION ENABLED
  12. 'student', {NAME => 'info', DATA_BLOCK_ENCODING => 'NONE', true
  13. BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', VERSIONS
  14. => '3', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL =
  15. > '2147483647', KEEP_DELETED_CELLS => 'false', BLOCKSIZE =
  16. > '65536', IN_MEMORY => 'false', ENCODE_ON_DISK => 'true',
  17. BLOCKCACHE => 'true'}
  18. 1 row(s) in 0.1100 seconds
  19. #同student表中插入一条数据
  20. hbase(main):007:0> put 'student','mary','info:age','19'
  21. 0 row(s) in 0.0490 seconds
  22. #从student表中取出mary的数据
  23. hbase(main):008:0> get 'student','mary'
  24. COLUMN CELL
  25. info:age timestamp=1396366643298, value=19
  26. 1 row(s) in 0.0190 seconds
  27. #让student表失效
  28. hbase(main):009:0> disable 'student'
  29. 0 row(s) in 1.2400 seconds
  30. #列出所有表
  31. hbase(main):010:0> list
  32. TABLE
  33. student
  34. 1 row(s) in 0.0310 seconds
  35. #删除student表
  36. hbase(main):013:0> drop 'student'
  37. 0 row(s) in 1.1100 seconds
  38. #列出所有表
  39. hbase(main):014:0> list
  40. TABLE
  41. 0 row(s) in 0.0400 seconds

3 Thrift安装

安装完成HBase后,我们还需要安装Thrift,因为其他语言调用HBase的时候,是通过Thrift连接的。

Thrift是需要本地编译的,官方没有提供二进制安装包,首先下载thrift-0.9.1,Thrift下载页:http://thrift.apache.org/download

3.1 下载thrift

下载Thrift有两种方式,直接下载源代码发行包,或者通过git下载源代码,请选择其中一种方式下载。

3.1.1 直接下载源代码发行包 thrift-0.9.1.tar.gz


  1. ~ wget http://apache.fayea.com/apache-mirror/thrift/0.9.1/thrift-0.9.1.tar.gz
  2. ~ tar xvf thrift-0.9.1.tar.gz
  3. ~ mv thrift-0.9.1/ /home/conan/hadoop/
  4. ~ cd /home/conan/hadoop/

注:后文中的各种错误,都是这个包引起的

3.1.2 通过git下载源代码


  1. ~ git clone https://git-wip-us.apache.org/repos/asf/thrift.git thrift-git
  2. ~ mv thrift-git/ /home/conan/hadoop/
  3. ~ cd /home/conan/hadoop/

为了避免各种出错,建议使用git下载源代码安装

3.2 通过thrift-0.9.1.tar.gz 发行包安装Thrift

Thrift是需要本地编译的,在Thrift解压目录输入./configure,会列Thrift在当前机器所支持的语言环境。

3.2.1 安装Thrift的依赖包


  1. sudo apt-get install libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev

如果只是为了连接rhbase,默认配置就可以了。如果除了希望支持rhbase访问,还支持PHP,Python,C++等语言的访问,就需要在系统中,装一些额外的类库。大家可以根据自己的要求,安装对应的软件包并设置Thrift的编译参数。

生成配置脚本


  1. ~ ./configure
  2. //省略部分日志输出
  3. thrift 0.9.1
  4. Building C++ Library ......... : yes
  5. Building C (GLib) Library .... : no
  6. Building Java Library ........ : yes
  7. Building C# Library .......... : no
  8. Building Python Library ...... : yes
  9. Building Ruby Library ........ : no
  10. Building Haskell Library ..... : no
  11. Building Perl Library ........ : no
  12. Building PHP Library ......... : no
  13. Building Erlang Library ...... : no
  14. Building Go Library .......... : no
  15. Building D Library ........... : no
  16. C++ Library:
  17. Build TZlibTransport ...... : yes
  18. Build TNonblockingServer .. : yes
  19. Build TQTcpServer (Qt) .... : no
  20. Java Library:
  21. Using javac ............... : javac
  22. Using java ................ : java
  23. Using ant ................. : /home/conan/toolkit/ant184/bin/ant
  24. Python Library:
  25. Using Python .............. : /usr/bin/python
  26. If something is missing that you think should be present,
  27. please skim the output of configure to find the missing
  28. component. Details are present in config.log.

我本机的已支持C++, Java与Thrift的通信。

3.2.2 增加Python语言的通信

虽然Python已被显示支持与Thrift但在后面编译过程中,还是缺少一些Python的库,我们需要再增加Python的依赖库

安装Python的依赖包


  1. sudo apt-get install python-all python-all-dev python-all-dbg

3.2.3 增加PHP语言的通信

安装PHP的依赖包


  1. sudo apt-get install php5-dev php5-cli phpunit

生成配置脚本


  1. ~ ./configure --enable-thrift_protocol
  2. //省略部分日志输出
  3. thrift 0.9.1
  4. Building C++ Library ......... : yes
  5. Building C (GLib) Library .... : no
  6. Building Java Library ........ : yes
  7. Building C# Library .......... : no
  8. Building Python Library ...... : yes
  9. Building Ruby Library ........ : no
  10. Building Haskell Library ..... : no
  11. Building Perl Library ........ : no
  12. Building PHP Library ......... : yes
  13. Building Erlang Library ...... : no
  14. Building Go Library .......... : no
  15. Building D Library ........... : no
  16. C++ Library:
  17. Build TZlibTransport ...... : yes
  18. Build TNonblockingServer .. : yes
  19. Build TQTcpServer (Qt) .... : no
  20. Java Library:
  21. Using javac ............... : javac
  22. Using java ................ : java
  23. Using ant ................. : /home/conan/toolkit/ant184/bin/ant
  24. Python Library:
  25. Using Python .............. : /usr/bin/python
  26. PHP Library:
  27. Using php-config .......... : /usr/bin/php-config
  28. If something is missing that you think should be present,
  29. please skim the output of configure to find the missing
  30. component. Details are present in config.log.

我们看到Thrift的配置中,增加了对PHP语言的支持。

3.2.4 编译和安装


  1. # 编译Thrift
  2. ~ make
  3. //省略部分日志
  4. make[5]: 正在进入目录 `/home/conan/hadoop/thrift-0.9.1/lib/php/src/ext/thrift_protocol'
  5. make[5]: *** 没有指明目标并且找不到 makefile。 停止。
  6. make[5]:正在离开目录 `/home/conan/hadoop/thrift-0.9.1/lib/php/src/ext/thrift_protocol'
  7. make[4]: *** [src/ext/thrift_protocol/modules/thrift_protocol.so] 错误 2
  8. make[4]:正在离开目录 `/home/conan/hadoop/thrift-0.9.1/lib/php'
  9. make[3]: *** [all-recursive] 错误 1
  10. make[3]:正在离开目录 `/home/conan/hadoop/thrift-0.9.1/lib/php'
  11. make[2]: *** [all-recursive] 错误 1
  12. make[2]:正在离开目录 `/home/conan/hadoop/thrift-0.9.1/lib'
  13. make[1]: *** [all-recursive] 错误 1
  14. make[1]:正在离开目录 `/home/conan/hadoop/thrift-0.9.1'
  15. make: *** [all] 错误 2

在make生成过程,出现PHP的编译错误。从Thrift的错误列表中,我们可以找到错误描述( https://issues.apache.org/jira/browse/THRIFT-2265 ),这是由于Thrift-0.9.1发行包,打包时缺少了PHP扩展文件造成的错误,并在Thrift-0.9.2版本中修复。

所以,我们如果还想继续使用Thrift-0.9.1版本,则不能支持PHP语言。


  1. # 生成配置信息,不包括PHP模块
  2. ~ ./configure --without-php_extension
  3. # 编译Thrift
  4. ~ make

编译过程中,又出现了C++编译错误。


  1. Makefile:832: 警告:覆盖关于目标“gen-cpp/ThriftTest.cpp”的命令
  2. Makefile:829: 警告:忽略关于目标“gen-cpp/ThriftTest.cpp”的旧命令
  3. /bin/bash ../../libtool --tag=CXX --mode=link g++ -Wall -g -O2 -L/usr/lib -o libtestgencpp.la ThriftTest_constants.lo ThriftTest_types.lo ../../lib/cpp/libthrift.la -lssl -lcrypto -lrt -lpthread
  4. libtool: link: ar cru .libs/libtestgencpp.a .libs/ThriftTest_constants.o .libs/ThriftTest_types.o
  5. ar: .libs/ThriftTest_constants.o: No such file or directory
  6. make[3]: *** [libtestgencpp.la] 错误 1
  7. make[3]:正在离开目录 `/home/conan/hadoop/thrift-0.9.1/test/cpp'
  8. make[2]: *** [all-recursive] 错误 1
  9. make[2]:正在离开目录 `/home/conan/hadoop/thrift-0.9.1/test'
  10. make[1]: *** [all-recursive] 错误 1
  11. make[1]:正在离开目录 `/home/conan/hadoop/thrift-0.9.1'
  12. make: *** [all] 错误 2

对于上面的2个编译错误,我决定换成git源代码的版本重新操作。

3.2 通过git源代码安装Thrift

运行安装命令


  1. # 进行thrift-git目录
  2. ~ cd /home/conan/hadoop/thrift-git
  3. # 复制0.9.1标签到新分支thrift-0.9.1
  4. ~ git checkout -b thrift-0.9.1 0.9.1
  5. # 产生配置脚本
  6. ~ ./bootstrap.sh
  7. # 生成配置信息
  8. ~ ./configure
  9. # 编译Thrift
  10. ~ make
  11. # 安装Thrift
  12. ~ sudo make install

走了许多弯路,终于使用git源代码版本安装好了Thrift。

查看thrift版本


  1. ~ thrift -version
  2. Thrift version 0.9.1

接下来,我们启动HBase的Thrift Server服务


  1. # 启动HBase的Thrift服务
  2. ~ /home/conan/hadoop/hbase-0.94.18/bin/hbase-daemon.sh start thrift
  3. starting thrift, logging to /home/conan/hadoop/hbase-0.94.18/bin/../logs/hbase-conan-thrift-master.out
  4. # 检查系统进程
  5. ~ jps
  6. 13838 TaskTracker
  7. 13541 JobTracker
  8. 15946 HMaster
  9. 32120 Jps
  10. 12851 NameNode
  11. 13450 SecondaryNameNode
  12. 13133 DataNode
  13. 32001 ThriftServer
  14. 15817 HQuorumPeer
  15. 16283 HRegionServer

我们看到ThriftServer已被启动,后面我们就可以使用多种语言,通过Thrift来访问HBase了,这样就完成了HBase的安装。

转载请注明出处:
http://blog.fens.me/linux-hbase-install/

【转】在Ubuntu中安装HBase的更多相关文章

  1. 在Ubuntu中安装Redis

    原文地址:http://blog.fens.me/linux-redis-install/ 在Ubuntu中安装Redis R利剑NoSQL系列文章,主要介绍通过R语言连接使用nosql数据库.涉及的 ...

  2. 转】在Ubuntu中安装Redis

    不多说,直接上干货! 原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/ 感谢! 在Ubuntu中安装Redis R利剑 ...

  3. 转】在Ubuntu中安装Cassandra

    原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/ 感谢! Posted: Mar 22, 2014 Tags: cas ...

  4. 在ubuntu中安装maven

    安装环境 操作系统:ubuntu 14.04.1 server amd64 安装jdk 在安装maven之前,必须确保已经安装过jdk. 安装jdk的方法请参考文章<在ubuntu中安装jdk& ...

  5. ubuntu中安装Docker

    系统要求: 必须时64位的系统,内核最低要求是3.10 查看系统内核: $ uname -r 3.11.0-15-generic 获取最新版本打Docker: $ wget -qO- https:// ...

  6. 如何在ubuntu中安装php

    如何在ubuntu中安装php 情衅 | 浏览 692 次 发布于2016-05-07 12:36   最佳答案   关于Ubuntu下的LAMP配置步骤: 首先要安装LAMP 就是Apache,PH ...

  7. 在 ubuntu 中安装 python3.5、 tornado、 pymysql

    一.在 ubuntu 中安装 python3.5 1.首先,在系统中是自带python2.7的.不要卸载,因为一些系统的东西是需要这个的.python2.7和python3.5是可以共存的. 命令如下 ...

  8. 解决在ubuntu中安装或升级时出现“11:资源暂时不可用”错误

    解决在ubuntu中安装或升级时出现“11:资源暂时不可用”错误 解决在ubuntu中安装或升级时出现“11:资源暂时不可用”错误. 下图为具体情况: 出现问题: termial下在执行sudo ap ...

  9. 如何在ubuntu中安装中文输入法?

    如何在ubuntu中安装中文输入法  在桌面右上角设置图标中找到“System Setting”,双击打开. 在打开的窗口里找到“Language Support”,双击打开.  可能打开会说没有安装 ...

随机推荐

  1. Zookeeper 简单操作

    1.  连接到zookeeper服务 [java2000_wl@localhost zookeeper-3]$ bin/zkCli.sh -server 127.0.0.1:2181 也可以连接远端的 ...

  2. JSP中的编译指令和动作指令的差别

    JSP中的编译指令和动作指令的差别 1.编译指令是通知Servlet引擎的处理消息.而动作指令仅仅是执行时的脚本动作 2.编译指令是在将JSP编译成Servlet时起作用,而动作指令可替换成JSP脚本 ...

  3. 一个bug在redmine中的诞生到终结

    1.測试员測试出bug,跟踪状态为支持,状态为新建,指派给产品经理. 2.产品经理鉴定确觉得bug.改动跟踪状态为bug.指派给技术经理: 3.技术经理收到bug,指派给开发者: 4.开发者收到bug ...

  4. fixedBox固定div漂浮代码 支持ie6以上大部分浏览器

    fixedBox固定div漂浮代码 支持ie6以上大部分浏览器 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E ...

  5. 浅谈JavaScript的面向对象程序设计(三)

    前面已经对JavaScript的面向对象程序设计作了简单的介绍,包括了对象的属性.对象的工厂模式.构造函数和原型等.通过介绍,这些创建对象的方法依然有不少优化和改进的地方. 组合使用构造函数模式和原型 ...

  6. UC技术博客开放通知

    国内知名浏览器UC开放技术博客( http://tech.uc.cn/),技术博客所涵盖技术点有: Hadoop Linux MySQL 前端与client技术 图像处理 开发语言和框架 数据存储 数 ...

  7. 2016/05/25 empty() 与 isset()的区别

    对于初学php的人来说,empty()和和isset()用法的区别是很难搞清楚的,他们的用法的差别不仔细去琢磨的话确实很难弄清楚. 先说一下他们的共同点: 都可以判定一个变量是否为空: 都返回bool ...

  8. java语法基础(一)

    这个是自己前两年做java视频教程时候的课件.感兴趣的同学可以参考下. 这里是纯粹的语法行总结. editplus的使用 选择项目目录 打开editplus 左侧目录导航栏 可以打开盘符,文件夹 可以 ...

  9. servlet简单例子1

    servlet简单例子1 分类: servlet jsp xml2012-04-18 21:54 3646人阅读 评论(3) 收藏 举报 servletloginjspaction浏览器 LoginS ...

  10. BZOJ_1415_[Noi2005]聪聪和可可_概率DP+bfs

    BZOJ_1415_[Noi2005]聪聪和可可_概率DP+bfs Description Input 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2 ...