前言
当数据量变大的时候,一台机器完成一个问题要计算好久好久。这时候就需要多台机器并行运算。然而,每台机器不能用单台机器运行的算法,自己算自己的。而是要有不同的分工,联合起来共同算完这个问题。
Hadoop就是这样的一个大数据处理框架。其中包括很多开源的处理框架,比如:
- 文件存储:Hadoop HDFS、Tachyon、KFS
- 离线计算:Hadoop MapReduce、Spark
- 流式、实时计算:Storm、Spark Streaming、S4、Heron
- K-V、NOSQL数据库:HBase、Redis、MongoDB
- 资源管理:YARN、Mesos
- 日志收集:Flume、Scribe、Logstash、Kibana
- 消息系统:Kafka、StormMQ、ZeroMQ、RabbitMQ
- 查询分析:Hive、Impala、Pig、Presto、Phoenix、SparkSQL、Drill、Flink、Kylin、Druid
- 分布式协调服务:Zookeeper
- 集群管理与监控:Ambari、Ganglia、Nagios、Cloudera Manager
- 数据挖掘、机器学习:Mahout、Spark MLLib
- 数据同步:Sqoop
- 任务调度:Oozie
那这么多,要怎么学呢?吴军博士在《数学之美》中提到:
分治算法是计算机科学中最漂亮的工具之一,我称为“各个击破”法。
我们就来各个击破。当然,先挑重点的学习。