7

数据分析知识补充:Hadoop、YARN、Spark、Hive

 3 years ago
source link: https://jyzhu.top/2020/12/11/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E7%9F%A5%E8%AF%86%E8%A1%A5%E5%85%85%EF%BC%9AHadoop%E3%80%81YARN%E3%80%81Spark%E3%80%81Hive/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

数据分析知识补充:Hadoop、YARN、Spark、Hive

发表于

2020-12-11 更新于 2020-12-12 分类于 Computer Notes

Hadoop

概念

HDFS文件系统+MapReduce数据处理

假如有1T的数据,我想一行一行正则过滤出想要的内容。就需要

  1. 把数据导入HDFS
  2. 定义map方式,也就是把key设置成行数,把value设置为每行内容
  3. 定义reduce:通过正则方式进行匹配,正确的内容通过reduce聚合起来返回

那么Hadoop就会把这个工作自动分配给你已有的n个计算结点去完成

YARN是MapReduce团队对原本框架的重构,可以理解成MapReduce v2

Spark是微软在Hadoop基础上改的,主要是解决了多余的中间结果读写问题,而是用cache来存(貌似?);并且还可以同时包含多个map和reduce。spark用起来比mr方便点

另外spark适用于实时计算,但是Hadoop不大适合,适合离线计算;这肯定也是因为那个鸡肋的中间结果读写

Hive是包在Hadoop外面的壳,Facebook搞的,把MapReduce程序包装成了类SQL,可能不会代码的人用起来方便点吧

HDFS基本原理

原理简单但是……估计操作更简单?

strucstruc
  1. nameNode负责维护数据block对应的dataNote映射信息
  2. DataNode当然就存具体block了
  1. 一个block存在3个区域中,这3个区域还要分布在2个主机上,防止数据挂掉(不知道这数据是默认的还是?)
  2. 原始的数据是会被分成小的block的。比如一个100m的数据可能被分成66m的block1和36m的block2
  3. block被写入HDFS的时候,是流式的,即一个block被分为更小的块,第一块写进host1,然后host1把它写给host2,这时候第二块又写进host1,同时host2写完了再把刚刚的第一块写给host3……

MapReduce基本原理

用户自己定义好map和reduce两个函数。

  • map函数:接受一个键值对(key-value pair),产生一组中间键值对。MapReduce框架会将map函数产生的中间键值对里键相同的值传递给一个reduce函数。
  • reduce函数:接受一个键,以及相关的一组值,将这组值进行合并产生一组规模更小的值(通常只有一个或零个值)。

例:统计词频:

map(String key, String value): 
  // key: document name
  // value: document contents
  for each word w in value:
    EmitIntermediate(w, "1");


reduce(String key, Iterator values):
  // key: a word
  // values: a list of counts
  int result = 0;
  for each v in values:
    result += ParseInt(v);
    Emit(AsString(result));

欢迎关注我的其它发布渠道


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK