根据我对hadoop应用的理解,对之前的总结进行了完善,都是些个人看法和总结。
我认为整个框架包含如下几个部分:
第一部分:hadoop文件系统
第二部分:编写自己的MR计算实现
第三部分:hadoop的扩展性
第四部分:集群管理
第五部分:调度系统
第六部分:第三方工具使用
第一部分
各知识点分布:
第一:主要掌握各文件系统的具体实现和使用
第二:文件系统基本操作
第三:压缩模式的使用和编写自定义的压缩模式
第四:序列化机制的使用
第五:checksum的使用(数据完整性)
第六:文件系统存储格式(sequenceFile和MapFile)
第七:HDFS的读取和写入流程
第八:HDFS调用方式
第九:分布式HASH算法
在这部分涉及到的开发,主要是实现自定义的文件系统,优化压缩算法、序列化机制等。
第二部分
对于这部分系统开发部分占的比重很大,分布如下:
第一:MR运行机制
第二:调度器的使用和如何实现自定义调度器
第三:调度器原理(目前掌握基础两个调度器:fair Scheduler和Capacity Scheduler)
第四:MR开发(环境的搭建、MR编写步骤、调试、类型与格式、MR运行等)
第五:排序算法
第六:如何灵活运用MR开发
在这部分主要是如何将相关问题转化成MR的分布式计算框架。
第三部分
这部分主要是掌握hadoop的相关扩展功能,一个集成C/C++,一个集成其他各种语言(R、python、perl、shell等)
前者需要掌握pipes,后者掌握Streaming。
第四部分
这块工作主要是涉及包括集群部署和监控管理,分布如下:
第一:hadoop集群里机器选型
第二:操作系统安装(这里也包括操作系统安装完成后的相关参数的调整)
第三:namenode的部署
第四:datanode的部署
第五:JVM选型与安装
第六:ganglia、nagios监控工具部署
第七:很重要搭建分布式部署和安装环境(使之更加智能化,因为随着集群的规模越大,不可能让工程师一台台安装)
第八:hadoop各种类型进程如何去分布(namenode、jobtracker、datanode、tasktracker、secondarynamenode),
以上属于部署部分,当基础环境完成后,需要对hadoop运行情况进行监控,分布如下:
第一:通过监控性能数据找到性能瓶颈所在
第二:通过监控机器数据掌握资源利用状态
第二:定时任务(如定时清理日志等)
第四:很重要namenode单点故障解决方案
第五:hadoop本身管理(增加节点、删除节点、备份等)
第六:各参数优化(包括:CPU、Memory、disk、socekt、hdfs参数、MR参数等)
这部分是一个长期的过程,需要经过碰到问题、解决问题、积累、消化和升华的过程。
最后是开发部分:就是开发适合自己的监控系统(这里包括:调度监控、硬件监控、进程监控、任务运行监控等)
第五部分
因为hadoop是一个提交式的计算平台,所以需要在外围编写一套调度程序。可以采用:
Shell、python、java等程序编写。
调度可以采用消息调度、crontab等方式
第六部分
因为hadoop有丰富的第三工具的支持,所以根据不同的业务应用场景,需要掌握对应的工具。
Sqoop
Hive
mahout
Zookeeper
Hbase
Pig等
这些就是目前所接触,每个点都可以细化更多地知识,这是一个长期学习的过程。