linux—如何确定hbase启动后准备就绪的时间?

ekqde3dh  于 2021-06-09  发布在  Hbase
关注(0)|答案(2)|浏览(289)

我想要一个依赖于hbase的软件,并且必须在它完全启动并准备就绪后才能启动,但是似乎start-hbase.sh会在这之前返回。
有没有办法检查/等待hbase状态?
我试过类似的方法 echo "status" | hbase shell ,但在hbase脱机时不会返回。我想得到一个状态码或者短信,告诉我它准备好了没有。

iecba09b

iecba09b1#

我使用的方法是,您尝试创建一个表,并一直尝试,直到您可以看到该表已创建,但我发现对于我想使用hbase进行(许多单元测试)的情况来说,它的速度太慢了,因此我想让它更快。必须打开单独的hbase shell来创建表,并且要检查列表是否存在,这使得速度变慢了,因为之后还必须打开shell来删除表,所以我一直在研究一种在单个shell执行中完成这一切的方法。
此脚本将尝试创建一个表,但如果由于任何原因无法创建,它将立即以非零状态退出,原因是 -n 这使它成为一个非交互式会话。它将继续,直到创建成功,然后立即清理测试表。
希望能对这种方法有一些想法

echo "Waiting for HBase to be ready..."
isHBaseReady=1
while [ ${isHBaseReady} -ne 0 ]
do
  echo "Testing table creation..."
  echo -e "create 'testtable', 'cf'\ndisable 'testtable'\ndrop 'testtable'" | \
    /opt/hbase-$HBASE_VERSION/bin/hbase shell -n > /dev/null 2>&1 && isHBaseReady=$?
done
echo "HBase is operational"

输出:

Waiting for HBase to be ready...
Testing table creation...
Testing table creation...
HBase is operational
x7rlezfr

x7rlezfr2#

我们检查以下组件:
1) 检查 hbase/bin/hbase shell 对于insert\list'testtable':

echo "create 'testtable', {NAME=>'colfam'}" | hbase_home/bin/hbase shell
echo "list" | hbase_home/bin/hbase shell
  1. hbase/bin/hbase hbck | grep "INCONSISTENT" 返回非零代码(所有hbase数据一致)。
    确保hbase已经准备好就足够了,但我现在正在尝试找到更简单的方法。

相关问题