Hbase RegionServer启动报错:org.apache.hadoop.hdfs.protocol.HdfsFileStatus, but class was expected
Posted 地表最强菜鸡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hbase RegionServer启动报错:org.apache.hadoop.hdfs.protocol.HdfsFileStatus, but class was expected相关的知识,希望对你有一定的参考价值。
最近通过CDH部署Hbase报错:org.apache.hadoop.hdfs.protocol.HdfsFileStatus, but class was expected,造成这个问题的原因是没有设置 hbase wal 的保存方式(或者集群时钟不同步):
WAL(Write-Ahead Logging)是一种高效的日志算法,几乎是所有非内存数据库提升写性能的不二法门,基本原理是在数据写入之前首先顺序写入日志,然后再写入缓存,等到缓存写满之后统一落盘。
之所以能够提升写性能,是因为WAL将一次随机写转化为了一次顺序写加一次内存写。提升写性能的同时,WAL可以保证数据的可靠性,即在任何情况下数据不丢失。假如一次写入完成之后发生了宕机,即使所有缓存中的数据丢失,
也可以通过恢复日志还原出丢失的数据。
每个Region Server维护一个HLog,而不是每个Region一个。这样不同region(来自不同table)的日志会混在一起,这样做的目的是不断追加单个文件相对于同时写多个文件而言,可以减少磁盘寻址次数,因此可以提高对table的写性能。
带来的麻烦是,如果一台region server下线,为了恢复其上的Region,需要将RegionServer上的log进行拆分,然后分发到其他RegionServer上进行恢复。
1、集群时钟不同步问题解决
ntp服务器
#安装
yum -y install ntp
#使⽤crontab 每半个⼩时同步⼀次内⽹的⼀台机器
#time
30 * * * * /usr/sbin/ntpdate bigdata001; /sbin/hwclock -w
#开启ntp服务
systemctl start ntpd.service
systemctl enable ntpd.service
关闭selinux
vim /etc/selinux/config —> SELINUX=disabled (修改)
关闭改Linux swapping参数
#查看
cat /proc/sys/vm/swappiness #30
#修改当前
echo 0 > /proc/sys/vm/swappiness
#添加到配置⽂件
echo "vm.swappiness=0" >> /etc/sysctl.conf
禁⽌透明⻚
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
#添加到配置⽂件
echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >>
/etc/rc.local
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >>
/etc/rc.local
#避免重启后不⽣效 添加执⾏权限
chmod +x /etc/rc.d/rc.local
内⽹机器dns解析
第三⽅依赖
yum -y install chkconfig python bind-utils psmisc libxslt zlib sqlite cyrussasl-plain cyrus-sasl-gssapi fuse fuse-libs redhat-lsb httpd mod_ssl
yum install bind-utils psmisc cyrus-sasl-plain libaio cyrus-sasl-gssapi fuse
portmap fuse-libs /lib/lsb/init-functions httpd mod_ssl openssl-devel pythonpsycopg2 mysql-python libxslt
2、Hbase WAL配置问题解决
打开CDH,找到Hbase的配置文件增加WAL配置,图示如下:
也可以去服务器找到 hbase-site.xml 配置文件添加:
<property>
<name>hbase.wal.provider</name>
<value>filesystem</value>
</property>
到此 Hbase RegionServer启动报错:org.apache.hadoop.hdfs.protocol.HdfsFileStatus, but class was expected。
以上是关于Hbase RegionServer启动报错:org.apache.hadoop.hdfs.protocol.HdfsFileStatus, but class was expected的主要内容,如果未能解决你的问题,请参考以下文章
HBase里配置SNAPPY压缩以后regionserver启动不了的问题
hbase启动之后master和regionserver相继自动断掉
hdp3: regionserver running as process 3170. Stop it first.