我想要一个依赖于hbase的软件,并且必须在它完全启动并准备就绪后才能启动,但是似乎start-hbase.sh会在这之前返回。有没有办法检查/等待hbase状态?我试过类似的方法 echo "status" | hbase shell ,但在hbase脱机时不会返回。我想得到一个状态码或者短信,告诉我它准备好了没有。
echo "status" | hbase shell
iecba09b1#
我使用的方法是,您尝试创建一个表,并一直尝试,直到您可以看到该表已创建,但我发现对于我想使用hbase进行(许多单元测试)的情况来说,它的速度太慢了,因此我想让它更快。必须打开单独的hbase shell来创建表,并且要检查列表是否存在,这使得速度变慢了,因为之后还必须打开shell来删除表,所以我一直在研究一种在单个shell执行中完成这一切的方法。此脚本将尝试创建一个表,但如果由于任何原因无法创建,它将立即以非零状态退出,原因是 -n 这使它成为一个非交互式会话。它将继续,直到创建成功,然后立即清理测试表。希望能对这种方法有一些想法
-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
x7rlezfr2#
我们检查以下组件:1) 检查 hbase/bin/hbase shell 对于insert\list'testtable':
hbase/bin/hbase shell
echo "create 'testtable', {NAME=>'colfam'}" | hbase_home/bin/hbase shell echo "list" | hbase_home/bin/hbase shell
hbase/bin/hbase hbck | grep "INCONSISTENT"
2条答案
按热度按时间iecba09b1#
我使用的方法是,您尝试创建一个表,并一直尝试,直到您可以看到该表已创建,但我发现对于我想使用hbase进行(许多单元测试)的情况来说,它的速度太慢了,因此我想让它更快。必须打开单独的hbase shell来创建表,并且要检查列表是否存在,这使得速度变慢了,因为之后还必须打开shell来删除表,所以我一直在研究一种在单个shell执行中完成这一切的方法。
此脚本将尝试创建一个表,但如果由于任何原因无法创建,它将立即以非零状态退出,原因是
-n
这使它成为一个非交互式会话。它将继续,直到创建成功,然后立即清理测试表。希望能对这种方法有一些想法
输出:
x7rlezfr2#
我们检查以下组件:
1) 检查
hbase/bin/hbase shell
对于insert\list'testtable':hbase/bin/hbase hbck | grep "INCONSISTENT"
返回非零代码(所有hbase数据一致)。确保hbase已经准备好就足够了,但我现在正在尝试找到更简单的方法。