VMWare9下基于Ubuntu12.10搭建Hadoop-1.2.1集群—整合Zookeeper和Hbase
VMWare9下基于Ubuntu12.10搭建Hadoop-1.2.1集群—整合Zookeeper和Hbase
这篇是接着上一篇hadoop集群搭建进行的。在hadoop-1.2.1基础之上安装zookeeper-3.4.5和hbase-0.94.20。
上一篇: VMWare9下基于Ubuntu12.10搭建Hadoop-1.2.1集群
安装zookeeper和hbase
1. 环境说明
使用VMWare创建5台Ubuntu虚拟机,环境具体信息例如以下:
|
虚拟机 |
操作系统 |
JDK |
Hadoop |
Zookeeper |
Hbase |
|
VMWare Workstation 9 |
ubuntu-12.10-server-amd64 |
jdk-7u51-linux-x64 |
hadoop-1.2.1 |
zookeeper-3.4.5 |
hbase-0.94.20 |
|
主机名 |
IP地址 |
虚拟机名 |
节点内容 |
|
master |
192.168.1.30 |
Ubuntu64-Master |
namenode, Jobtracker, zookeeper |
|
secondary |
192.168.1.39 |
Ubuntu64-Secondary |
secondarynamenode, zookeeper, hmaster |
|
slaver1 |
192.168.1.31 |
Ubuntu64-slaver1 |
datanode, tasktracker, zookeeper, regionserver |
|
slaver2 |
192.168.1.32 |
Ubuntu64-slaver2 |
datanode, tasktracker, zookeeper, regionserver |
|
slaver3 |
192.168.1.33 |
Ubuntu64-slaver3 |
datanode, tasktracker, zookeeper, regionserver |
虚拟机搭建hadoop集群能够參考文档:VMWare9下基于Ubuntu12.10搭建Hadoop-1.2.1集群。
hbase自带zookeeper,还是想把zookeeper独立出来,方便进行控制。由于个。所以奇数个集群更佳,部署节点越多可靠性越高,所以我们部署5个节点。
2. 安装配置Zookeeper
部署Zookeeper
解zookeeper-3.4.5.tar.gz包到/home/hadoop/zookeeper-3.4.5
|
tar -zxvf zookeeper-3.4.5.tar.gz -C /home/hadoop/ |
配置环境变量
把hadoop设置到全局环境变量中
|
sudo vim /etc/profile |
在最以下加入例如以下内容
|
export ZOOKEEPER_HOME=/home/hadoop/zookeeper-3.4.5 export PATH=$PATH:$ZOOKEEPER_HOME/bin |
刷新环境变量
|
source /etc/profile |
/bin/zkEnv.sh
|
ZOO_LOG_DIR=/home/hadoop/zookeeper_home/log if [ "x${ZOO_LOG4J_PROP}" = "x" ] then ZOO_LOG4J_PROP="INFO, CONSOLE, ROLLINGFILE" fi |
配置zookeeper日志的输出文件夹及日志输出通道,zookeeper默认仅仅输出console日志,启动zookeeper就会在屏幕上输出一大堆的控制台信息。非常不方便。
/conf/log4j.properties
|
# Define some default values that can be overridden by system properties zookeeper.root.logger=INFO, CONSOLE, ROLLINGFILE zookeeper.console.threshold=INFO zookeeper.log.dir=/home/hadoop/zookeeper_home/log zookeeper.log.file=zookeeper.log zookeeper.log.threshold=DEBUG zookeeper.tracelog.dir=/home/hadoop/zookeeper_home/logs zookeeper.tracelog.file=zookeeper_trace.log |
这里也同步调整一下。
/conf/zoo.cfg
zoo.cfg文件默认是没有的,把zoo_sample.cfg文件复制一份为zoo.cfg。然后改动对应配置项。
|
cp zoo_sample.cfg zoo.cfg vim zoo.cfg |
改动为例如以下配置内容
|
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. dataDir=/home/hadoop/zookeeper_home/data dataLogDir=/home/hadoop/zookeeper_home/logs # the port at which the clients will connect clientPort=2181 server.0=master:2888:3888 server.1=slaver1:2888:3888 server.2=slaver2:2888:3888 server.3=slaver3:2888:3888 server.9=secondary:2888:3888 |
配置数据路径和日志路径,这些路径须要自己手工创建。
tickTime配置项为心跳时间(毫秒)
initLimit配置项为zookeeper的leader接受follower初始化连接的最长心跳时间数(换算为时间initLimit*tickTime)。当leader在最长心跳时间数之内没有收到follower的回馈信息,则表示follower连接失败。
syncLimit配置项为zookeeper的leader和follower之间发送消息和请求应答的最长心跳时间数(换算为时间syncLimit*tickTime)
clientPort配置项为客户端连接port
server.0=master:2888:3888配置项为master上zookeeper节点的连接信息。0表示server编号。master为server的主机名或ip地址,2888为leader与follower的通讯port号。3888为leader宕机后又一次选举leader的通讯port号。
/zookeeper_home/data/myid
myid文件是zookeeper节点的标识号(參考/conf/zoo.cfg配置,master上面配置为0)。在自己配置的zookeeper的data文件夹下创建myid文件。然后改动标识号(不同zookeeper节点myid的值不同样)。
|
cd /zookeeper_home/data vim myid |
以master为例改动内容为
|
0 |
分发Zookeeper副本
通过scp命令分发安装配置好的zookeeper。文件夹分发须要加-r參数
|
scp -r /home/hadoop/zookeeper-3.4.5 hadoop@slaver1: /home/hadoop/ |
分发myid副本
通过scp命令分发zookeeper的myid文件,然后依据server调整节点myid值
|
scp -r /home/hadoop/zookeeper_home hadoop@slaver1: /home/hadoop/ |
3. 安装配置Hbase
部署Hbase
hbase的hmaster部署在secondaryserver上,以secondaryserver为例,解hbase-0.94.20.tar.gz包到/home/hadoop/hbase-0.94.20
|
tar -zxvf hbase-0.94.20.tar.gz -C /home/hadoop/ |
配置环境变量
把hadoop设置到全局环境变量中
|
sudo vim /etc/profile |
在最以下加入例如以下内容
|
export HBASE_HOME=/home/hadoop/hbase-0.94.20 export PATH=$PATH:$HBASE_HOME/bin |
刷新环境变量
|
source /etc/profile |
/conf/hbase-env.sh
|
# The java implementation to use. Java 1.6 required. export JAVA_HOME=/usr/lib/jdk1.7.0_51/ # Extra Java CLASSPATH elements. Optional.配置为hadoop的conf文件夹 export HBASE_CLASSPATH=/home/hadoop-1.2.1/conf # Where log files are stored. $HBASE_HOME/logs by default. export HBASE_LOG_DIR=/home/hadoop/hbase_home/log # Tell HBase whether it should manage it's own instance of Zookeeper or not. export HBASE_MANAGES_ZK=false |
JAVA_HOME配置hbase的jdk文件夹。
HBASE_CLASSPATH变量配置的为hadoop的conf文件夹。hbase用来查找hadoop的hdfs配置信息;
HBASE_LOG_DIR为日志的输出文件夹。
HBASE_MANAGES_ZK 配置为false,那么hbase在启动的时候就不会启动自带的zookeeper,不会应用自带zookeeper进行协调管理,配置为true则会应用自带zookeeper。
自行手工创建日志输出文件夹。
/conf/log4j.properties
|
hbase.security.logger=INFO, console, DRFA |
/conf/hbase-site.xml
|
<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://master:9000/hbase</value> <description>HDFS中存储hbase数据的文件夹,注意主机名和port号要与hadoop的core-site.xml中fs.default.name的相应</description> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> <description>hbase採用集群分布式</description> </property> <property> <name>hbase.zookeeper.quorum</name> <value>master,secondary,slaver1,slaver2,slaver3</value> <description>协调hbase的zookeeper节点主机。奇数个</description> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/home/hadoop/zookeeper_home/data</value> <description>zookeeper集群data文件夹Property from ZooKeeper's config zoo.cfg. The directory where the snapshot is stored.</description> </property> <property> <name>zookeeper.session.timeout</name> <value>60000</value> <description></description> </property> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2181</value> <description>HBASE_MANAGES_ZK=false时该port号要与zoo.cfg中配置clientPort属性的port号一致</description> </property> <property> <name>hbase.master</name> <value>secondary</value> <description>hbase的主控节点,用secondary这台server</description> </property> <property> <name>hbase.master.info.port</name> <value>60010</value> <description></description> </property> <property> <name>hbase.master.port</name> <value>60000</value> <description></description> </property> <property> <name>hbase.regionserver.lease.period</name> <value>60000</value> <description></description> </property> <property> <name>hbase.rpc.timeout</name> <value>60000</value> <description></description> </property> <property> <name>hbase.tmp.dir</name> <value>/home/hadoop/hbase_home/tmp</value> <description>Temporary directory on the local filesystem.</description> </property> </configuration> |
hbase.master配置项是hbase的hmaster服务所在的主机,本例中配置在secondary主机上。
/conf/regionservers
|
slaver1 slaver2 slaver3 |
配置全部regionserver所在的服务器主机名或ip地址
替换hadoop-core的jar包
hbase的lib文件夹中自带hadoop-core-${version}.jar包,可能与实际系统中的hadoop版本号不一致,所以要从hadoop中把jar包拷贝过来,拷贝之前先删除旧版本号的jar包。
|
rm /home/hadoop/hbase-0.94.20/lib/hadoop-core-1.0.4.jar cp /home/hadoop/hadoop-1.2.1/hadoop-core-1.2.1.jar /home/hadoop/hbase-0.94.20/lib/ |
分发Hbase副本
通过scp命令分发安装配置好的hbase,hbase没有部署到masterserver上,所以不须要拷贝到master上
|
scp -r /home/hadoop/hbase-0.94.20 hadoop@slaver1: /home/hadoop/ |
分发环境变量
/etc/profile为root用户全部,所以scp要加sudo,并且须要传输到slaver1的root用户下。
|
sudo scp /etc/profile root@slaver1:/etc/profile |
4. 启动Zookeeper。Hbase測试
zookeeper和hbase都部署完成,能够启动进行測试。
hadoop、zookeeper、hbase必须依照一定顺序进行启动和停止。
启动hadoop à 启动zookeeper à 启动hbase à 停止hbase à 停止zookeeper à 停止hadoop
启动zookeeper
zookeeper没有主机,须要每一个节点单独启动,所有启动完成,zookeeper会依据选举策略,选出一个leader出来,其余节点为follower。
zookeeper服务命令例如以下
|
命令 |
作用 |
|
zkServer.sh start |
启动zookeeper服务 |
|
zkServer.sh status |
查看zookeeper服务状态,能看到该节点是leader还是follower |
|
zkServer.sh stop |
停止zookeeper服务 |
|
zkServer.sh restart |
重新启动zookeeper服务 |
zookeeper服务启动之后,日志中会出现一些连接失败警告,这是正常的,由于其他节点服务还未启动,所有启动之后,正常日志中就不会出现这些信息。
启动hbase
hbase集群仅仅须要在hmaster节点上启动和关闭就可以,其他regionserver会被自己主动启动,本例中把hmaster部署在secondaryserver上,所以仅仅须要在secondaryserver上启动hbase,在启动hbase之前须要查看hadoop和zookeeper是否正常启动。
hbase服务命令例如以下
|
命令 |
作用 |
|
start-hbase.sh |
启动hbase集群服务,包含hmaster,regionservers |
|
stop-hbase.sh |
关闭hbase集群服务,包含hmaster,regionservers |
|
hbase-daemons.sh start/stop regionserver/zookeeper/master-backup |
启动或停止全部的regionserver或(内置)zookeeper或backup-master |
|
hbase-daemon.sh start/stop master/regionserver/zookeeper |
启动或停止单个master或regionserver或(内置)zookeeper |
启动hbase集群,然后查看zookeeper和hbase的日志,看是否出现异常情况。
hbase有个shellclient,通过shell命令能够操作hbase,有ddl和dml等等。
进入shell
|
hbase shell |
创建一个test表。列族有'info','score','user'三个
|
create 'test', 'info','score','user' |
查看创建的表
|
list |
用shell创建表的时候,zookeeper的日志中发现一个info级别的error,日志信息例如以下。
|
hbase(main):006:0* create 'test', 'info','score','user' 2014-06-11 18:44:28,343 - INFO [ProcessThread:-1:PrepRequestProcessor@407] - Got user-level KeeperException when processing sessionid:0x1467fef37790002 type:delete cxid:0x6f zxid:0xfffffffffffffffe txntype:unknown reqpath:n/a Error Path:/hbase/table/test Error:KeeperErrorCode = NoNode for /hbase/table92/test |
这个error不影响hbase的应用,查看了一下hdfs中的文件夹。发现/hbase以下就直接是test表的文件,没有table92的文件夹。一直都搞不懂,尝试把hbase的hdfs存储路径调整为hdfs://master:9000/hbase/table92,依旧会有这个日志。test表会存储到table92以下。从网上搜索也没有什么结果。索性不去耗费时间了,有了解的朋友能够指点下。
VMWare9下基于Ubuntu12.10搭建Hadoop-1.2.1集群—整合Zookeeper和Hbase的更多相关文章
- VMWare9下基于Ubuntu12.10搭建Hadoop-1.2.1集群
VMWare9下基于Ubuntu12.10搭建Hadoop-1.2.1集群 下一篇:VMWare9下基于Ubuntu12.10搭建Hadoop-1.2.1集群-整合Zookeeper和Hbase 近期 ...
- [Docker][Hadoop]基于Docker1.12.3 搭建Hadoop 2.7.2 集群以及简单分析
一 Hadoop简介 Hadoop 2.7.2 Doc refer to http://hadoop.apache.org/docs/r2.7.2/ HDFS (The following is a ...
- hadoop备战:一台x86计算机搭建hadoop的全分布式集群
主要的软硬件配置: x86台式机,window7 64位系统 vb虚拟机(x86的台式机至少是4G内存,才干开3台虚机) centos6.4操作系统 hadoop-1.1.2.tar.gz jdk- ...
- 3.环境搭建-Hadoop(CDH)集群搭建
目录 目录 实验环境 安装 Hadoop 配置文件 在另外两台虚拟机上搭建hadoop 启动hdfs集群 启动yarn集群 本文主要是在上节CentOS集群基础上搭建Hadoop集群. 实验环境 Ha ...
- CentOS 环境下基于 Nginx uwsgi 搭建 Django 站点
因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,CentOS 环境下基于 Nginx uwsgi 搭建 Django 站点 以下 ...
- Ubuntu 12.04下Hadoop 2.2.0 集群搭建(原创)
现在大家可以跟我一起来实现Ubuntu 12.04下Hadoop 2.2.0 集群搭建,在这里我使用了两台服务器,一台作为master即namenode主机,另一台作为slave即datanode主机 ...
- (转)基于keepalived搭建MySQL的高可用集群
基于keepalived搭建MySQL的高可用集群 原文:http://www.cnblogs.com/ivictor/p/5522383.html MySQL的高可用方案一般有如下几种: keep ...
- Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)
声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 一.服务器环境 主机名 IP 用户名 密码 安装目录 master188 192.168.29.188 hadoop hadoop /home/ha ...
- Hadoop HA 高可用集群搭建
一.首先配置集群信息 vi /etc/hosts 二.安装zookeeper 1.解压至/usr/hadoop/下 .tar.gz -C /usr/hadoop/ 2.进入/usr/hadoop/zo ...
随机推荐
- HDU_1542_(树状数组)
Stars Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- day23-1 isinstance、issubclass和反射
目录 isinstance和issubclass 反射(hasattr,getattr,setattr,delattr) isinstance和issubclass isinstance(obj,cl ...
- 解决【npm ERR! Unexpected end of JSON input while parsing near '...sh_time":141072930277'】方案
问题描述执行npm install的时候报错npm ERR! Unexpected end of JSON input while parsing near '...sh_time":141 ...
- C# 使用MongoDB(学习记录)
1)下载MongoDB https://www.mongodb.com/download-center#community 2)在D盘新建Data->db 3)执行命令 mongod --dbp ...
- CF1029E Tree with Small Distances
题目描述 给定一棵树.要求往树中加入一些边使得从1到其他节点的距离至多是2 . 输出加入边的最小数量.(边全部都是无向的) 题解:好多人都说是贪心,但是我写的是树形dp. (这道题实在太像小胖守皇宫了 ...
- [Python3网络爬虫开发实战] 1.2.6-aiohttp的安装
之前介绍的Requests库是一个阻塞式HTTP请求库,当我们发出一个请求后,程序会一直等待服务器响应,直到得到响应后,程序才会进行下一步处理.其实,这个过程比较耗费资源.如果程序可以在这个等待过程中 ...
- js 技巧 (一)
· 事件源对象 event.srcElement.tagName event.srcElement.type · 捕获释放event.srcElement.setCapture(); event ...
- chrome最强大的浏览器插件推荐,只要你会用其他的插件你可以删除了
我们在学习和工作中经常会需要用到各种各样不同需求的插件,结果chrome插件越装越多,chrome浏览器也越来越慢!有时候链我们自己都懵圈了,一时间都想不起来这个插件是干什么用的.更可气的是,很多时候 ...
- socketserver模块使用方法
一.socketserver模块介绍 Python提供了两个基本的socket模块.一个是socket,它提供了标准的BSD Socket API: 另一个是socketserver,它提供了服务器中 ...
- C语言学习4
C/C++语言五大内存分区:堆.栈.自由存储区.全局/静态存储区和常量存储区 栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的存储区,里面的变量通常是全局变量.函数参数等. 堆:就是那些 ...