2020-08-29- 第十二周学习总结
1 大数据
(1)技术发展
2004 年前后,“三驾马车”奠定了大数据的基础。分别是:分布式文件系统 GFS、大数据分布式计算框架 MapReduce 和 NoSQL 数据库系统 BigTable。
(1)Lucene 创始人 Doug Cutting 开发开源搜索引擎 Nutch
(2)2006 年 Doug Cutting 将 Nutch 中的大数据技术分离出来,称为 Hadoop,主要包括 HDFS 和 MapReduce。
(3)2007 年前后,Hadoop 逐渐被 Yahoo、百度阿里进行大数据存储。
(4)2008 年,Yahoo 认为 MapReduce 语法复杂,发明了 Pig 脚本语言。
(5)2008 年前后,Facebook 发明了 Hive,可以使用 SQL 语法进行转换为 MapReduce 计算程序。
(6)2012 年,将 MapReduce 计算引擎和资源调度分离开来,称为 Yarn。
(7)2012 年,MapReduce 进行机器学习计算性能很差,于是出现了 Spark。
MapReduce 和 Spark 是批处理计算,离线计算。而 Storm,Flink,Spark Streaming 等流计算框架对实时数据进行计算。
(2)应用发展与应用领域
2 Hadoop
(1)HDFS 解决了大规模数据的存储问题,即使用 DataNode 节点将大数据文件进行分块复制存储,同时也提升了文件的存储和读取速度,数据的安全性问题也使用 RAID 技术分布存储解决。
(2)MapReduce 自动实现了分布式并行计算,它将数据处理过程分为 Map 和 Reduce 两个过程,利用框架在计算机集群上根据需求运行多个实例来处理各个子任务,然后再对结果进行合并。
(3)Hive 不仅支持 SQL 语句,而且内置了许多加载数据导出数据的指令。有了 Hive 就不用自己再去写 MapReduce 了,仅需要编写 SQL,编译器会将这些 SQL 解析为 Hadoop 需要的 MapReduce 程序。
Hive 的架构可以分为 Client/Driver/Compiler/Hadoop/metadata 几个,结构如上图所示。通过 JDBC 或者命令行的方式作为 Hive 的输入,输入的 SQL 语句交给 Driver 驱动器,然后 Driver 调用 Compiler 编译器,会将 SQL 编译成一个 MapReduce 执行计划,最后将该计划交给 Hadoop 执行。MetaData 则是记录了 SQL 语句中数据表结构字段等信息。
编译器的执行过程:
(1)Parser 把 SQL 转换为抽象语法树(AST)
(2)SemanOc Analyzer 把抽象语法树转换为查询块(QB)
(3)Logical Plan Generator 把 QB 转换为逻辑执行计划(Logical Plan)
(4)Logical OpOmizer 重写执行计划,带入更多的优化后的计划
(5)Physical Plan Generator 将逻辑执行计划转换为物理执行计划(M/R Jobs)
(6)Physical OpOmizer 适应性 Join 策略调整
最终得到的是 Operator 集合。
评论