解决ThriftServer(hbase相关结点)结点无法停止问题

解决ThriftServer(hbase相关结点)结点无法停止问题

之前在通过PyCharm远程连接HBase时,启动了thrift相关结点,但却发现无法关闭

报错提示:

hadoop@master:/usr/local/hbase/bin$ ./hbase-daemon.sh stop thrift
no thrift to stop because kill -0 of pid failed with status 2
rm: cannot remove '/var/hadoop/pids/hbase-hadoop-thrift.pid': Permission denied

image-20230425134828400

先说解决方案:

​ 上述报错有两处:一是结点无法停止问题,二是 rm 时文件权限不够(暴力解决方法:赋予文件所有权限 chmod 777 文件名)

解决结点无法停止问题

​ 单点模式:只需在hbase-env.sh 文件下加入:export HBASE_PID_DIR=/var/hadoop/pids

​ 集群模式:在所有机器下的hbase-env.sh 文件下加入:export HBASE_PID_DIR=/var/hadoop/pids

​ 配置完后,创建出对应的文件夹 /var/hadoop/pids 正常是需要创建 hadoop 和 pids 这两个文件夹

export HBASE_PID_DIR=/var/hadoop/pids

image-20230427222636556

​ 修改后:

image-20230427224111323

问题原因:

​ 因为我配置的是集群,不知到什么原因,只在主机的hbase-env.sh 文件下配置了 export HBASE_PID_DIR=/var/hadoop/pids,然而在其他的两个从机上都没有配置,所以导致结点无法停止。

在解决这个问题时的发现:

​ 之前每次关闭hbase相关节点时,发现都无法关闭,但在关闭hadoop相关结点时,hbase结点都关了,所以没当回事,通过解决这个问题,个人认为之前hbase结点都是在hadoop关闭后自动掉了。

总结:

​ 在配置集群时,最好先在主机上配置好相关配置后在scp到从机,减少不必要的麻烦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用Thrift操作HBase,您需要按照以下步骤进行设置: 1. 定义HBase表的结构 在HBase中,首先需要定义表的结构,包括列族和列。您可以使用HBase Shell或HBase Java API来创建表并定义结构。 2. 生成HBaseThrift代码 使用Thrift工具生成HBaseThrift代码。您可以使用以下命令: ```bash thrift --gen java hbase.thrift ``` 这将生成Java的Thrift代码文件。 3. 在Java项目中使用生成的Thrift代码 将生成的Thrift代码文件(.java文件)添加到您的Java项目中,并使用它们与HBase进行交互。 首先,您需要创建一个连接到HBase的`THBaseService`实例。示例代码如下: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.thrift.generated.*; import org.apache.thrift.TException; import org.apache.thrift.protocol.TBinaryProtocol; import org.apache.thrift.transport.TSocket; import org.apache.thrift.transport.TTransport; public class HBaseThriftExample { public static void main(String[] args) throws TException { TTransport transport = new TSocket("localhost", 9090); transport.open(); TBinaryProtocol protocol = new TBinaryProtocol(transport); THBaseService.Client client = new THBaseService.Client(protocol); // 执行HBase操作 // ... transport.close(); } } ``` 4. 使用Thrift接口执行操作 在创建了`THBaseService`客户端之后,您可以使用Thrift接口执行各种HBase操作,例如插入数据、获取数据、删除数据等。以下是一些示例代码: - 插入数据: ```java TPut put = new TPut(); put.setRow(ByteBuffer.wrap(Bytes.toBytes("row1"))); put.setColumnValues(Collections.singletonList(new TColumnValue(ByteBuffer.wrap(Bytes.toBytes("cf")), ByteBuffer.wrap(Bytes.toBytes("col1")), ByteBuffer.wrap(Bytes.toBytes("value1")))))); client.put(ByteBuffer.wrap(Bytes.toBytes("mytable")), put); ``` - 获取数据: ```java TGet get = new TGet(); get.setRow(ByteBuffer.wrap(Bytes.toBytes("row1"))); TResult result = client.get(ByteBuffer.wrap(Bytes.toBytes("mytable")), get); ``` - 删除数据: ```java TDelete delete = new TDelete(); delete.setRow(ByteBuffer.wrap(Bytes.toBytes("row1"))); client.deleteSingle(ByteBuffer.wrap(Bytes.toBytes("mytable")), delete); ``` 这只是一些示例代码,您可以根据需要使用其他Thrift接口方法来执行更多操作。 请注意,为了成功执行这些操作,您需要确保HBase正在运行并且在指定的主机和端口上进行监听。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值