System.exit(job.waitForCompletion(true) ? 0 : 1);
System.out.println("end");
}
}
那么这个map和reduce进程是怎么在分布式的集群中启动的呢?

文章插图
map/reduce启动过程
上图比较清晰地阐述的整个过程,再描述一波 。MR中主要是两种进程角色,分别为 JobTracke r和 TaskTracker 两种 。
JobTracker在集群中只有一个,而 TaskTracker 存在多个,当 JobClient 启动后,往 JobTracker 提交作业,JobTracker查看文件路径决定在哪些服务器启动 Map 进程 。
然后发送命令给 TaskTracker,告诉它要准备执行任务了,TaskTracker收到任务后就会启动 TaskRunner 下载任务对应的程序 。
map计算完成,TaskTracker对map输出结果 shuffer 操作然后加载 reduce 函数进行后续计算,这就是各个模块协同工作的简单过程 。
Hive上述过程还是比较麻烦,我们能不能直接写SQL,然后引擎帮助我们生成mapreduce代码,就反复我们在web开发的时候,不直接写SQL语句,直接交给引擎那么方便,有的,它就是HIVE 。
举个例子:

文章插图
SQL

文章插图
拆分
那么使用MR的计算过程完成这条SQL的处理:

文章插图
MR TO SQL
Spark
Spark是基于内存计算的大数据并行计算框架 。基于此说说上面hadoop中组件的缺点:
- 磁盘IO开销大 。每次执行都需要从磁盘读取并且计算完成后还需要将将中间结果存放于磁盘
- 表达能力有限 。大多数计算都需要转换为Map和Reduce两个操作,难以描述复杂的数据处理
- 编程模型不限于map和reduce,具有更加灵活的编程模型
- spark提供内存计算,带来更高的迭代运算效率且封装了良好的机器学习算法
- 采用了基于图DAG的任务调度机制
Flink是大数据处理的新规,发展速度之快,这两年也相继出现中文资料 。作为流式数据流执行引擎,针对数据流的分布式计算提供数据分布,数据通信以及容错机制等功能 。同时Flink也提供了机器学习库,图计算库等 。
附一张去年参加会议回答问题中奖的马克杯,嘻嘻 。

文章插图
去年参会
关于大数据相关知识点可作为扩充点,在面试的过程中经常会有大数问题,除了从算法的角度来阐述,也可以从这些框架中吸取一些经验 。
唠嗑对于之前从事c/c++开发的我,很多时候是linux的开发 。在学校又没怎么接触系统性的项目,更不知道后端技术的博大进深,可能文中涉及的也就一部分,不过希望还在学校的小伙伴可以知道有这些东西,然后通过强大的搜索引擎,给自己个比较明确的方向,也许会少走点弯路,这周的文章就到这了,goodbye!
推荐阅读
- 同步与异步Python有何不同?
- 8种ETL调度算法归纳总结,看完这些你就全明白了
- InnoDB的行锁,原来为你做了这么多
- 教你怎样饮茶最健康,饮茶要健康
- 黑茶与普洱迷你配,普洱熟茶与黑茶的区别
- 教你制作银杏叶保健茶,养生保健茶
- 运势|神回复:什么职业可以避免社交啊?最好是什么人都不麻烦你。
- 从qq头像看性格 你的性格如何
- 咳嗽总不好?或许你需要这五个良方
- 几点喝姜茶你知道吗,你知道吗
