大数据 相关技术
我个人热爱 大数据 ,在硅谷这也是大家津津乐道的,有个笑话,big data is like teenage sex: everyone talks about it, nobody really knows how to do it. 其实大家还是兴趣驱动就好,不要那么功利, 大数据 技术涉及太多,平常工作中也是慢慢积累,有无数的坑和技术细节需要克服。并不是说那个技术最热就要用哪个,如果你用不好,你的压力很大的,举个例子,你用某个开源数据库,发现它偶尔有数据丢失怎么办,如果这是线上服务,你不断收到报警,这时候你当时选用它的优点 scalable,容错性都没意义了。
接着说 大数据 ,这里面Hadoop作为行业标准,我面过的除了Google,微软不用,几乎所有的公司都在用,建议大家利用这个机会。这里面有三巨头,Cloudera是老牌Hadoop咨询公司,Hadoop的创始人做CTO,Hortonworks也是很多Hadoop的committee,MapR是提出hdfs的erasure 编码方式高效而著名,它们都是融了巨资,模式也很像,先推出社区免费版,但有个商业版提供更好的管理。 而今年出现一匹黑马Spark,简单说就是内存级别的计算,比Hadoop框架里能节约IO,利用缓存,能适应批处理,迭代,流式计算。
这里看一下它的生态系统,如何学Hadoop是个循序渐进过程,先要理解学习它的Core系统,HDFS, MapReduce, Common,在外围有无数的系统工具方便开发,我个人用过的是Avro作为数据格式,Zookeeper作为选主的高可靠性的组件,Solr作为搜索接口,Pig搭建工作流,Hive 数据仓库查询,Oozie管理工作流,HBase 作为KV分布式存储,Mahout 数据挖掘 的库,Cassandra nosql 数据库。我建议初学的考虑Chinahadoop的课程。
而Hadoop本身也是个进化过程,几年前0.19版本,到0.20、0.23分流成Yarn架构,最后进化成Hadoop2.0, Hadoop1.0 和 2.0 它们的接口和组件是完全不同的,但总体上Hadoop 2.0 是趋势,因为它有Yarn这样分离的资源管理平台,可以以插件的方式开发上面的Application,解放了生产力,而像Spark,Storm这些新型处理器也是支持Hadoop 2.0的。
这里是Hortonworks它们提出来的社区版本架构,可以说标准的制定者,一流的公司制定标准,其他的公司一般用只能用它们提供的稳定版,没有多少话语权。但从事 大数据 ,并不见得是要去这些制定标准的公司,大量的应用也是非常考验架构的灵活性,并且能看到实际的产品,很有成就感。
说到2014年火的,还是要看Spark。已经开了2届Spark大会,上千人的规模,无数人对比Hadoop 100倍的性能提升而兴奋。这里说它的背景是诞生于Berkeley的Amplab,它们有个很有名的BDAS(Berkeley Data Analytics Stack),目前Spark已经成为Apache的顶级项目。去年这个实验室的教授跟学生出去成立Databricks公司,拉到两轮上千万的风投,有人问Spark是Hadoop的终结者吗?我看2014年Spark大会上,所有的Hadoop大佬公司都是鼎力支持,像Cloudrea甚至放弃Impala的一线支持而转变成Spark。
如果这么发展下去,星星之火可以燎原埃它里面用到Scala是一种函数式语言。里面的组件也很多,有Shark支持SQL类似Hive,有Spark Streaming、MLlib、Graphx、SparkR、BlinkDB。它的核心数据结构是RDD,可以跑在各种分布式系统上。总体上是个包容性+侵略性的系统。我个人也很看好它们的发展。
我在Linkedin做过一些 大数据 的广告系统,我就简单提一些我学到的。
-
Linkedin有特有的开源数据系统,包括Voldermort (分布式KV存储), Kafka (分布式实时消息队列),Espresso (基于mysql的海量存储),Databus(数据变化捕捉),可以查看https://data.linkedin.com
-
Lambda架构,离线使用Hadoop做pipeline,near online做高效聚合,提供混合式架构,达到实时和一致性的妥协。
-
Kafka在linkedin起到奠基作用,一方面所有实时tracking都是通过它,另一方面 data bridge,比如图中通过kafka可以实现数据的无缝衔接,否则很难想像每个数据源异构系统,它们的通信将是 n^2 级别的复杂度。
-
分布式并不酷,如果考虑到高可靠性,强一致性而数据量并不是想像的大,不见得要使用;否则自讨苦吃。尽量使用成熟的,可靠的,例如MySQL, Memcached
求职经验
根据我的求职经验,我给出几点建议: