研究spark/hive/hbase相关技术
能力说明:
精通JVM运行机制,包括类生命、内存模型、垃圾回收及JVM常见参数;能够熟练使用Runnable接口创建线程和使用ExecutorService并发执行任务、识别潜在的死锁线程问题;能够使用Synchronized关键字和atomic包控制线程的执行顺序,使用并行Fork/Join框架;能过开发使用原始版本函数式接口的代码。
暂时未有相关云产品技术能力~
阿里云技能认证
详细说明一般历史数据比较大的情况,可以先导入数据表,然后异步建索引。
数据量不大先建好索引表再导数据。
带有索引的表不支持duplicate value功能,容易导致索引数据不一致,需考虑其他方案解决。
1.使用hbase hbck -details 查看hbase region状态 发现有些region无法上线
看下regionserver是否正常,日志看好像是挂掉了
HBase shell创建表不需要执行表schema,写入数据时动态指定列名即可。
phoenix支持使用sql创建表,创建表需要定义好表结构,底层默认会对列名进行编码,且多出一个默认列。
phoenix索引是用coprocessor同步更新的,写索引表时会先写WAL,一旦索引数据写入失败则回放WAL,保证索引数据最终写入成功。
最好是regionserver数目的整数倍,根据数据量提前预估,主要rowkey设计要合理,否则容易出现热点问题
phoenix索引通过coprocessor实现,原表数据更新时会触发phoenix数据更新。
监控用ganlia试试
最好是创建view的语句也发出来
看日志是连接超时了,可以设置下HBase客户端超时参数:
hbase.rpc.timeout=60000000;
hbase.client.scanner.timeout.period=60000000;
IMPORT工具会启动mr任务导入数据到hbase,可以观察mr,任务成功执行结束并load到hbase表就说明导入了。
验证条数的话可以先统计下原来数据条数,然后计算下hbase数据条数进行比对就可以。
phoenix默认对列名进行编码。建表时你可以指定属性COLUMN_ENCODED_BYTES=0 可以看到原始列名。
组合索引在查询时遵循最左前缀原则,查询条件需包含最左前缀列,否则不会走索引
HBase包括Hadoop生态组件基本都是使用java语言实现的。
HBase具有非常高的写吞吐能力,不同规格集群配置qps不同。
详细参考:https://help.aliyun.com/document_detail/59012.html?spm=a2c4g.11186623.6.555.3d8139dbvmQyvn
hive不支持创建hbase二级索引的。
目前阿里也有类似的解决方案,采用spark+phoenix的方案。
phoenix支持HBase二级索引,能够加速HBase复杂查询场景,对于多表复杂分析则用spark分析phoenix,也能够利用二级索引提升分析性能。
可以参考阿里云HBase官网,对于rowkey设计讲解的很完善。
https://help.aliyun.com/document_detail/59035.html?spm=a2c4g.11186623.6.574.415333e0ZlzbGE