伪分布式模式安装HBase和ZooKeeper

第一步:安装单机ZooKeeper

1.在namenode机器下,配置zookeeper,先解压安装包,使用命令:

tar -zxvf zookeeper-3.4.4.tar.gz  

 2.进入zookeeper的配置目录,首先把zoo_sample.cfg重命名一下,可以重新复制一遍,使用命令:

cp zoo_sample.cfg  zoo.cfg 

3.配置zoo.cfg

dataDir=/usr/local/zookeeper/dataDir
dataLogDir=/usr/local/zookeeper/dataLogDir

server.1 = ubuntu-131:7000:7001  (ubuntu-131:这是linux的hostname)

4、验证是否安装成功

./zkServer.sh status

返回图上所示,表示安装成功。 

第二步:安装Hbase

1.解压缩hbase的软件包,使用命令:

tar -zxvf hbase-0.94.2.tar.gz  

2、进入hbase的配置目录,在hbase-env.sh文件里面加入java环境变量.即

export JAVA_HOME=/usr/lib/jvm/jdk1.8

加入变量,不使用Hbase自带的Zookeeper:

export  HBASE_MANAGES_ZK=false

3、你确认HDFS安装成功之后,编辑hbase-site.xml ,添加配置文件:

<!该属性是指HBase在HDFS中使用的目录的位置,让namenode 监听locahost的9000端口,只有一份数据拷贝-->
    <property>
                <name>hbase.rootdir</name>
                <value>hdfs://192.168.124.131:9000/hbase</value>
    </property>
    <property>
                <name>dfs.replication</name>
                <value>1</value>
    </property>
    <!-- 此处必须为true,不然hbase仍用自带的zk,若启动了外部的zookeeper,会导致冲突,hbase启动不起来 -->
    <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
    </property>
    <!-- zk的位置 -->
    <property>  
            <name>hbase.zookeeper.quorum</name>  
            <value>ubuntu-131</value>  
    </property> 
    <!-- hbase主节点的位置 -->
    <property>
        <name>hbase.master</name>
        <value>192.168.124.131:60000</value>
    </property>
    <property>
         <name>zookeeper.znode.parent</name>
         <value>/hbase/master</value>
    </property>

4、拷贝zookeeper conf/zoo.cfg到hbase的conf/下。

5、在regionservers加入ubuntu-131 。(hostname)

第三步:启动报错error: KeeperErrorCode = NoNode for /hbase/master

搭建完集群之后,在hbase shell中查看表,出现error: KeeperErrorCode = NoNode for /hbase/master

1. 查看日志,是因为zookeeper启动后又自动关闭了。为什么会出现这个问题呢?是因为原来是因为zoo.cfg里的data目录是配置在/tmp下的,这目录是会定时清空的,因此,需要更改该目录,我的设置为/usr/local/work/zkdata。重新启动zookeeper。

2. 若问题还未解决,则可能是hbase中的zookeeper设置不成功。编辑hbase-2.1.0/conf/hbase-site.xml,加入配置:

<property>
        <name>hbase.unsafe.stream.capability.enforce</name>
        <value>false</value>
    </property>

因为远程hbase配置默认为/hbase路径。

3. 若问题还未解决,说明zookeeper未重启成功,删除zk数据目录下之前生成的version-2文件夹,即可。

4.总结:反正出现该问题,不是hbase本身问题,而是zookeeper的影响,因为zookeeper是监控整个hbase节点状态,控制hbase集群通信的重要工具。

第四步启动:

1、bin目录下:

./start-hbase.sh

2、./hbase shell (进入hbase的shell界面)

3、status命令测试是否成功:

返回如上说明服务启动成功。如果启动失败,注意查看相关日志,找出失败原因。

4、简单命令操作:

创建一个名为 test 的表,这个表只有一个 列族 为 cf。可以列出所有的表来检查创建情况,然后插入些值。

hbase(main):003:0> create 'test', 'cf'
0 row(s) in 1.2200 seconds
hbase(main):003:0> list 'table'
test
1 row(s) in 0.0550 seconds
hbase(main):004:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.0560 seconds
hbase(main):005:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0370 seconds
hbase(main):006:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0450 seconds

Scan这个表,操作如下

hbase(main):007:0> scan 'test'
ROW        COLUMN+CELL
row1       column=cf:a, timestamp=1288380727188, value=value1
row2       column=cf:b, timestamp=1288380738440, value=value2
row3       column=cf:c, timestamp=1288380747365, value=value3
3 row(s) in 0.0590 seconds

Get一行,操作如下

hbase(main):008:0> get 'test', 'row1'
COLUMN      CELL
cf:a        timestamp=1288380727188, value=value1
1 row(s) in 0.0400 seconds

disable 再 drop 这张表,可以清除你刚刚的操作

hbase(main):012:0> disable 'test'
0 row(s) in 1.0930 seconds
hbase(main):013:0> drop 'test'
0 row(s) in 0.0770 seconds 

关闭shell

hbase(main):014:0> exit
<think>好的,我需要帮助用户了解如何在伪分布式环境下搭建HBase并使用内置ZooKeeper。根据用户提供的引用内容,我需要整理出配置步骤,并确保所有技术细节准确无误。 首先,用户提到了HBase伪分布式部署需要依赖HDFS,所以第一步应该是确认Hadoop环境已经配置好。引用[2]指出HBase的数据存储在HDFS上,因此必须先安装启动Hadoop。需要提醒用户确保Hadoop正常运行,并检查HDFS的访问权限,避免HBase写入数据时出现问题。 接下来,用户需要下载并解压HBase。引用[1][4]提到了HBase安装路径配置文件的修改。我应该指导用户下载合适的HBase版本,解压到指定目录,并设置环境变量,如HBASE_HOMEPATH,以便于后续操作。 然后是配置HBase的核心文件。主要修改hbase-site.xml,这里需要参考引用[1]中的参数:hbase.rootdir指向HDFS的路径,hbase.cluster.distributed设置为true,hbase.zookeeper.property.dataDir指定ZooKeeper的数据存储路径。同时,确保使用内置ZooKeeper,所以需要检查hbase-env.sh中的HBASE_MANAGES_ZK是否为true。引用[3]提到如果使用外部ZooKeeper需要设置为false,但这里用户要求内置,所以保持默认或显式设置为true。 启动顺序也很重要。根据引用[4],需要先启动Hadoop,然后启动HBase。用户可能会忽略这一步,导致服务无法正常启动。此外,启动HBase后,使用jps命令检查进程,确认HMaster、HRegionServer以及ZooKeeper进程是否存在,这有助于验证配置是否正确。 最后,验证部署是否成功。通过HBase Shell执行status命令,查看集群状态,或访问Web界面。这部分需要给出具体的命令预期结果,方便用户自查。 在整理步骤时,需要注意引用对应的参考文献,例如配置hbase.zookeeper.property.dataDir时引用[1],环境变量设置引用[4][5]。同时,确保所有配置项使用正确的LaTeX格式,如$HBASE_HOME$,独立公式用$$...$$,但在这个场景可能用不上,但行内变量需要用$符号包裹。 用户可能遇到的问题包括HDFS权限错误、端口冲突或配置参数错误,应在注意事项中提醒。例如,HBase需要与Hadoop版本兼容,内置ZooKeeper的默认端口是2181,需确保未被占用。 总结步骤:Hadoop环境准备→安装HBase→配置hbase-site.xmlhbase-env.sh→启动服务→验证。每个步骤引用相关文献,并保持语言简洁,结构清晰。</think>### HBase伪分布式部署配置(使用内置ZooKeeper) #### 一、环境准备 1. **Hadoop基础环境** HBase伪分布式依赖HDFS存储数据,需先部署Hadoop伪分布式环境并启动HDFS服务[^2]。 验证Hadoop状态: ```bash start-dfs.sh # 启动HDFS jps # 确认NameNode、DataNode进程存在 ``` 2. **安装HBase** 下载HBase二进制包(如`hbase-2.5.8-bin.tar.gz`),解压并配置环境变量: ```bash tar -zxvf hbase-2.5.8-bin.tar.gz -C /usr/local mv /usr/local/hbase-2.5.8 /usr/local/hbase ``` 编辑`~/.bashrc`添加: ```bash export HBASE_HOME=/usr/local/hbase export PATH=$PATH:$HBASE_HOME/bin source ~/.bashrc # 使配置生效[^4] ``` --- #### 二、关键配置修改 1. **配置`hbase-site.xml`** 修改`$HBASE_HOME/conf/hbase-site.xml`,核心参数如下: ```xml <configuration> <!-- 指定HBase数据存储到HDFS --> <property> <name>hbase.rootdir</name> <value>hdfs://localhost:9000/hbase</value> </property> <!-- 启用分布式模式 --> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <!-- 指定内置ZooKeeper数据存储路径 --> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/usr/local/hbase/zookeeper_data</value> </property>[^1] </configuration> ``` 2. **配置`hbase-env.sh`** 确保使用内置ZooKeeper(默认配置,无需修改): ```bash export HBASE_MANAGES_ZK=true # 使用内置ZooKeeper[^3] ``` --- #### 三、启动与验证 1. **启动顺序** ```bash start-dfs.sh # 先启动HDFS start-hbase.sh # 再启动HBase jps # 应包含HMaster、HRegionServer、QuorumPeerMain(内置ZooKeeper进程)[^4] ``` 2. **验证服务** - **通过HBase Shell访问**: ```bash hbase shell status # 输出应显示1个活跃的HMaster ``` - **Web UI检查**: 访问 `http://localhost:16010`,确认集群状态正常。 --- #### 四、注意事项 1. **权限问题** HBase需有权限读写HDFS路径`/hbase`,可通过HDFS命令授权: ```bash hdfs dfs -chmod -R 777 /hbase ``` 2. **端口冲突** 内置ZooKeeper默认使用端口`2181`,若冲突可修改`hbase-site.xml`中`hbase.zookeeper.property.clientPort`参数。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值