Hbase和Zookeeper的安装和配置
Zookeeper的安装和配置
在Hbase安装前需要提前安装并配置好Zookeeper
如需下载最新版请到官方网址 ,也可以点击这里下载版本 zookeeper-3.5.1-alpha
Zookeeper的安装和配置十分简单, 既可以配置成单机模式, 也可以配置成集群模式:
单机模式
将 zookeeper 的安装包解压到合适目录(这里解压到“/usr/hadoop/zookeeper-3.5.1-alpha”),进入zookeeper目录下的conf子目录, 创建zoo.cfg:
tickTime=2000
dataDir=/usr/zookeeper/data
dataLogDir=/usr /zookeeper/logs
clientPort=4180
参数说明:
- tickTime: zookeeper中使用的基本时间单位, 毫秒值.
- dataDir: 数据目录. 可以是任意目录.
- dataLogDir: log目录, 同样可以是任意目录. 如果没有设置该参数, 将使用和dataDir相同的设置.
- clientPort: 监听client连接的端口号.
至此, zookeeper的单机模式已经配置好了。
启动server只需执行指令 (前提是先定位到“/usr/hadoop/zookeeper-3.5.1-alpha”下):
bin/zkServer.sh start
Server启动之后,就可以启动 client 连接 server 了,执行指令:
bin/zkCli.sh -server localhost:4180
伪集群模式
所谓伪集群, 是指在单台机器中启动多个zookeeper进程, 并组成一个集群. 以启动3个zookeeper进程为例.
将zookeeper的目录拷贝2份:
|--zookeeper0
|--zookeeper1
|--zookeeper2
更改zookeeper0/conf/zoo.cfg文件为:
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/usr /zookeeper/data
dataLogDir=/usr /zookeeper/logs
clientPort=4180
server.0=127.0.0.1:8880:7770
server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772
新增了几个参数, 其含义如下:
- initLimit: zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower. initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间. 此时该参数设置为5, 说明时间限制为5倍tickTime, 即5*2000=10000ms=10s.
- syncLimit: 该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为2, 说明时间限制为2倍tickTime, 即4000ms.
- server.X=A:B:C 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口. 由于配置的是伪集群模式, 所以各个server的B, C参数必须不同.
参照zookeeper0/conf/zoo.cfg, 配置zookeeper1/conf/zoo.cfg, 和zookeeper2/conf/zoo.cfg文件. 只需更改dataDir, dataLogDir, clientPort参数即可.
在之前设置的dataDir中新建myid文件, 写入一个数字, 该数字表示这是第几号server. 该数字必须和zoo.cfg文件中的server.X中的X一一对应.
/Users/apple/zookeeper0/data/myid文件中写入0, /Users/apple/zookeeper1/data/myid文件中写入1, /Users/apple/zookeeper2/data/myid文件中写入2.
分别进入/Users/apple/zookeeper0/bin, /Users/apple/zookeeper1/bin, /Users/apple/zookeeper2/bin三个目录, 启动server.
任意选择一个server目录, 启动客户端:
bin/zkCli.sh -server localhost:4180
集群模式
集群模式的配置和伪集群基本一致.
由于集群模式下, 各server部署在不同的机器上, 因此各server的conf/zoo.cfg文件可以完全一样.
下面是一个示例:
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/usr /zookeeper/data
dataLogDir=/usr /zookeeper/logs
clientPort=4180
server.43=10.1.39.43:2888:3888
server.47=10.1.39.47:2888:3888
server.48=10.1.39.48:2888:3888
示例中部署了3台zookeeper server, 分别部署在10.1.39.43, 10.1.39.47, 10.1.39.48上. 需要注意的是, 各server的dataDir目录下的myid文件中的数字必须不同.
10.1.39.43 server的myid为43, 10.1.39.47 server的myid为47, 10.1.39.48 server的myid为48.
Hbase-1.1.2的配置
1. 安装包下载,可以到官网下载最新版本,也可以点击下载 Hbase-1.1.2-bin.tar.gz 和 Hbase-1.1.2-src.tar.gz 版本;另附:Apache HBase 官方文档中文版
因为这里需要把 hbase 整合到 hadoop,所以需要注意 hbase 的版本要与 hadoop 的版本对应。
如果先安装好了 hadoop 则要根据 hadoop 的版本选择 hbase 的版本,反之,则要根据 hbase 的版本选择 hadoop 的版本。
根据“Linux+Hadoop+Hbase+Zookeeper+Thrift版本选择&配置(一)”可知这里选择的是“Hbase-1.1.2”(点击下载)
由于 HBase 依赖 Hadoop,它配套发布了一个Hadoop jar 文件在它的 lib 下。该套装jar仅用于独立模式。在分布式模式下,Hadoop版本必须和HBase下的版本一致。用你运行的分布式Hadoop版本jar文件替换HBase lib目录下的Hadoop jar文件,以避免版本不匹配问题。确认替换了集群中所有HBase下的jar文件。Hadoop版本不匹配问题有不同表现,但看起来都像挂掉了。
下载完后会有两个文件:Hbase-1.1.2-bin.tar.gz 和 Hbase-1.1.2-src.tar.gz
Hbase-1.1.2-bin.tar.gz:解压到安装位置,这里是“/usr/hadoop/hbase-1.1.2”;
Hbase-1.1.2-src.tar.gz:解压后的文件夹为hbase-1.1.2,到
./hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift/ 下找到 hbase.thrift 文件拷贝备用。
2. 修改配置文件
1)环境变量配置
vim /etc/profile
export HBASE-HOME=/usr/local/programe/hbase
export PATH=.:$HBASE-HOME/bin
保存退出,执行如下命令让修改生效
source /etc/profile
2)修改hbase/conf/目录下的hbase_env.sh和hbase-site.xml文件
hbase_env.sh文件内容修改,包括两个地方。
一、修改JAVA-HOME的内容
export JAVA-HOME=/usr/java/jdk1.7.0_80
二、修改最后一行,启用HBase托管的ZooKeeper,去掉#即可
export HBASE_MANAGES_ZK=true
hbase-site.xml 文件内容修改
因为在这里 hadoop 采用的是伪分布模式,所以 hbase/conf 下的配置文件 hbase-site.xml 只需要配置成如下即可:
“vi conf/hbase-site.xml”或“vim conf/hbase-site.xml”(注意:此时所处的位置是在Hbase的安装目录下,即“/usr/hadoop/hbase-1.1.2”)
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://efficient:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>false</value>
</property>
<property>
<name>zookeeper.znode.parent</name>
<value>/hbase</value>
</property>
</configuration>
参数说明:
hbase.rootdir:表示数据存储目录,它必须与你的 Hadoop 集群的 core-site.xml 文件配置保持完全一致才行(其中:efficient是主机名,9000是端口号)
默认为 hbase.rootdir 是指向 /tmp/hbase-${user.name} ,但是这样的话,在机器重启后会丢失数据(重启的时候操作系统会清理/tmp目录)。
hbase.cluster.distributed:表示完全分布模式的 启用-true/停用-false(这里是伪分布模式,将其置为false)
zookeeper.znode.parent:表示ZooKeeper中的Hbase的根ZNode的路径(即根路径)。
2.启动Hbase
cd /usr/hadoop/hbase-1.1.2”
然后执行命令:“./bin/start-hbase.sh”,如果出现类似“starting Master, logging to logs/hbase-user-master-example.org.out”字样表示配置成功。
3. 用shell连接你的Hbase
./bin/hbase shell”,会出现以“hbase(main):001:0>”结尾的篇幅
输入“version”,然后回车就可查看 hbase 的版本号信息。
输入“list”,然后回车就可查看表名列表,如果显示正常则表明前面的配置成功。
可以试下其他的 hbase shell 命令。
2015.9.10 11:29 willem 将 hbase-1.1.2 整合到 hadoop-2.6.0
不积跬步,无以至千里;不积小流,无以成江海.