09 2019 档案
摘要:Exception in thread "main" org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.protocol.AlreadyBeingCreatedException): Failed to APPEND_FILE
阅读全文
摘要:kafka中每个主题一般都会有很多个分区,为了及时消费到数据,我们可能会启动很多个消费者去一个消费topic中的数据。每个分区只能由消费组内的一个消费者去消费。那么,同一个消费组内的消费者是如何确定消费哪些分区的数据呢? kafka内部中存在两种分配策略:Range和RoundRobin。 kafk
阅读全文
摘要:某些spark分区已经处理完数据,另一些分区还在处理数据,从而导致这个批次的作业消耗时间变长,甚至导致spark作业无法及时消费kafka中的数据。 解决办法: 1)修改kafkaRDD类的getPartition方法: 就是通过设置 topic.partition.subconcurrency 参
阅读全文
摘要:region数量的影响: 通常较少的region可使集群运行的更加平稳,官方指出,每个regionServer大约100个regions的时候效果最佳,理由如下: 1)hbase的一个特性MSLAB,它有助于防止堆内存的碎片化,减轻垃圾回收full gc的问题,默认是开启的。但是每个MenStore
阅读全文
摘要:rowkey是什么? rowkey相当于mysql、orcale中的主键,用于标识唯一的行,是完全由用户指定的一串不重复的字符串,hbase的数据永远都是根据rowkey的字典顺序排序的。 Rowkey的作用 1)读写数据时通过rowkey找到对应region;2)MenStore中数据按rowke
阅读全文
摘要:触发flush操作的条件: 1)region中所有MenStore占用的内存超过相关阈值 当一个region中所有MenStore占用的内存大小超过刷写阈值,会触发一次刷写,hbase.hregion.memstore.flush.size 默认值为128M。我们每次调用put、delete都会去检
阅读全文
摘要:hbase本身对支持的列簇没有数量限制,当我们建议列簇一般设在1-3之间。 在hbase中调用API往对应的表中插入数据,会写到MenStore的,而Menstore是一种内存结构,每个列簇对应一个Menstore。 存储在Menstore中的数据在一定条件下会进行Flush操作,每次flush的时
阅读全文
摘要:每个region都有startkey和endkey,协处理器的代码是在region上执行,而这些代码在region上执行的时候,我们可以拿到当前region的信息,包括startkey和endkey,然后我们可以用startkey和rowkey拼接,就可以查到我们需要的数据了。 1)定义proto文
阅读全文
摘要:未加盐数据:spark可以使用inputformat、outputformat来读写hbase表。 加盐以后:需要在rowkey之前加一些前缀,否则是查不到数据的。 1)我们需要重新写getsplits方法:从名字我们可以知道是要计算有多少个splits。在hbase中,一个region对用一个sp
阅读全文