最近的工作我很着重从hbase的使用和系统运维这两个角度进行总结,因为工作繁忙所以没法进一步深入查阅资料进行总结,今天还是和以前备忘录一样,将自己觉得有所领悟的知识点先写下来。
hbase的使用的确很神奇,我以前自学hbase感觉困难重重,现在发现还是没有实战经验,也没有接触很好的实践场景,虽然困难重重,但是有一点我之前还是理解到位的,那就是hbase和关系数据库相比是一个更加松散的数据结构,hbase的优势就是在建表的阶段就可以充分考虑数据查询的效率问题。这句话可能不是太好理解,等以后有时间我再展开分析。
创建一张hbase的表包含rowkey、列族、列最后是列对应的内容,rowkey,列族以及列的设计应该包含数据索引的功能,例如人员身份信息表,我们可以把不同身份信息包含在rowkey里,这样当进行一个具体业务查询时候就可以从业务概念上缩小数据范围,而hbase存储数据是按照hregion进行存储的,而hregion又是按照列族进行存储,因此合理列族设计也会使得查询数据量变的更小。当然这些都是批量查询,如果我们要查询具体的某一条数据了,那么我们就要设计更加精确的索引,这个问题就更加有意思了。这些还需要继续研究和琢磨下。
大数据技术日新月异,传统的hadoop技术已经显得有点老套了,hadoop生态圈的技术已经超出了java原始语言的范畴,就像spark使用了scala语言,这也说明编程语言也在发生巨大的演进了。程序员的痛苦就是在于你要不断的学习,不断的更新自己的知识结构,这个要把它当作一个习惯。
我现在面对一个好机遇可以深入学习下hadoop相关技术,我应该首先要把基础打好,也就是说像spark和storm这样的新技术我不应该贪恋新而勉为其难先学,还是从hadoop基础技术开始,这点药切记。
以前专职做了许久前端,因此对于服务端系统运维接触并不深入,最近好好做了几回运维工程师的事情,安装linux服务器,安装程序,查看日志,监控系统和软件的运行情况,这些工作让我发现一个优秀的系统运维人员其实并不简单,这里特别需要你对操作系统的知识有深入了解和运用,而且运维的工作对于程序后续的性能优化至关重要,因此linux的操作也是今后要加固的重点,而且我现在发现理解操作系统的知识对于学习好hadoop技术以及网络编程也是至关重要。