hadoop课程设计论文 hadoop课程设计报告_spark


前言:

到目前为止有了一个月的时间,学习了python基础及算法、常用计算库numpy和pandas数据的导入和各种处理、matplotlib和seaborn做数据可视化 以及上周的大数据框架hadoop及spark相关思想和操作。通过这段时间的课程、作业、考试和线下练习,自我感觉打下了比较良好的基础。

今天主要总结下上周的大数据的内容

一、课程大纲及的知识点

1)Hadoop的历史及概念和结构组成大致了解。

首先它是起源于google的三篇论文,再者Doug Cutting基于Google的GFS论文实现了分布式文件存储系统,可以说他是hadoop之父。

概念:Hadoop的核心是HDFS和Map-Reduce ,所以它解决了因单机存储和计算瓶颈带来的问题,首先可以通过多台廉价的PC组成集群来存储大数据,同时多个节点并行的读取和处理数据相比单机也极大的提升了性能。

HDFS是什么呢?


hadoop课程设计论文 hadoop课程设计报告_spark_02


  1. HDFS 即hadoop 分布式文件存储系统。它被设计为主从模式(即Master - Slave),Master即NameNode,作为集群的主节点,它提供统一的命名空间,负责维护整个hdfs文件系统的目录树。 DataNode作为slave集群的从节点,主要负责存储和管理各个数据块block。
  2. 简单的说,在物理上,它是由多台普通linux服务器构建成一个集群,当存储大数据时,数据会平均分成多个数据块(默认大小为128MB),它们会存储在多个DataNode上。同时为了保证数据不会因为节点故障而丢失,每份block都会备份多份(默认3)存储在不同的节点。
  3. 另外,HDFS是设计成适应一次写入,多次读出的场景,且不支持文件的修改。需要频繁的RPC交互,写入性能不好。

而MAP-REDUCE是一种编程模型。

通俗说MapReduce是一套从海量·源数据提取分析元素最后返回结果集的编程模型,将文件分布式存储到硬盘是第一步,而从海量数据中提取分析我们需要的内容就是MapReduce做的事了。


hadoop课程设计论文 hadoop课程设计报告_hadoop_03


MapReduce的基本原理就是:将大的数据分析分成小块逐个分析,最后再将提取出来的数据汇总分析,最终获得我们想要的内容。

2)Spark

Spark是一个开源的分布式计算框架,它可以替代Map-Reduce,它是基于内存计算的,处理速度比MapReduce快很多,同时它更加易于使用,还提供了 SparkSql sql 分析处理,SparkStreaming 实时计算 , Mlib 机器学习库 和Spark GraphX图计算。

在这里,我们要了解Spark的核心概念和数据结构

  • 应用程序:由一个driver program和多个job构成;
  • job:由多个stage组成;
  • stage:对应一个taskset;
  • taskset:对应一组关联的相互之间没有shuffle依赖关系的task组成。
  • task:任务最小的工作单元


hadoop课程设计论文 hadoop课程设计报告_spark_04


spark中核心的数据结构有 RDD dataFrame dataset

在spark2.0中主要使用的是dataFrame dataset并且它们二者也做了一定的统一。但是我们并不能不理解RDD,因为dataFrame dataset都是基于rdd的,了解它的原理和重要。

那么什么是DataFrame,以及为什么它可以替代rdd呢?

DataFrame与RDD相似,也是一个不可变分布式数据集合。与 RDD 不同的是,数据都被组织到有名字的列中,就像关系型数据库中的表一样,也类似pandas里的dataFrame,让开发者可以更方便和高效的处理大数据。

同时我们要知道,针对rdd DataFrame dataset都有两种类型的操作:

一是transformation算子:在原有的rdd上操作获取一个新的rdd

二是action算子: 在RDD上运算获取我们想要的结果,通常这个结果不是rdd

另外要记住,这三种数据结构都具有Lazy属性,即transformation算子不会进行运算,直到action算子时才会一并进行所有的操作。

总结

总的来说Hadoop适合应用于大数据存储和大数据分析的应用,适合于服务器几千台到几万台的集群运行,支持PB级的存储容量。

Hadoop典型应用有:搜索、日志处理、推荐系统、数据分析、视频图像分析、数据保存等。

二、自己的收获&哪些还需要进一步学习掌握

在对大数据的整体概念和框架有了一个较为清晰的掌握的同时,不能放松实际的操作。

这里,我们在王老师搭建的集群上,进行了大量的hadoop操作。

首先基础,linux的常用操作管理,vim的数据使用。(还可以申请阿里云服务器练习)

想做大数据运维或者想进一步熟悉集群,可以自己尝试搭建自己的集群。

了解,我们ssh登录的客户端本地和hadoop集群的区别,熟练操作hadoop fs的相关指令。

通过词频统计练习,了解在hadoop上map -reduce的整个过程和机理。

在第二个环节,使用spark练习时,通过对数据的map filter 深圳sql 等操作实现种种功能,愈发加深对大数据存储和处理的了解。

同时,我在本地搭建了local模式的spark环境,通过网上一些数据和实例做了大量的练习

当然,完整项目的缺失,是我目前的致命弱点,希望后续通过一个个实际项目,夯实这部分的知识,能够学以致用。

三、立个FLAG吧

当前的一切,我都认为是为后续的机器学习打基础。不打算好高骛远,希望一切从实际出发,一步一个脚印,夯实基础,多预习多提问多练习多复习,练好四大金刚,争取Kaggle打一场好比赛,结业项目也做好点,给自己多加点分。