锦城学院电子信息学院(课程设计报告)课程名称:大数据技术基础设计题目:期末总结报告指导教师:学生姓名:学生学号:电子信息学院制2019年10月目录第1章知识点总结.......................................................................................................................................................11.1大数据技术概论...............................................................................................................................................11.2Hadoop平台的安装与配置............................................................................................................................21.3Hadoop分布式文件系统................................................................................................................................31.4Hadoop分布式计算框架................................................................................................................................51.5Spark概述.......................................................................................................................................................7第2章实验总结...........................................................................................................................................................82.1Spark实现单词计数.......................................................................................................................................82.2Spark计算平均消费水平............................................................................................................................112.3HDFS命令行操作........................................................................................................................................142.4Linux命令行操作..........................................................................................................................................152.5使用HDFSAPI编程...................................................................................................................................161第1章知识点总结1.1大数据技术概论1.1.1大数据概念大数据是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力来适应海量、高增长率和多样化信息资产。1.1.2大数据面临的主要障碍(1)存储容量问题(2)读取速率问题1.1.3大数据与云计算、物联网的关系大数据云计算为大数据提供了技术基础物联网是大数据的重要来源大数据为云计算提供用武之地大数据技术为物联网数据分析提供支撑云计算为物联网提供海量数据存储能力云计算物联网为云计算提供了广阔的应用空间物联网21.1.4Hadoop的概念(1)Hadoop为我们提供了一个可靠的共享存储和分析系统。HDFS实现数据的存储,MapReduce实现数据分析和处理。(2)Hadoop是一个分布式处理的软件框架,主要处理大量数据。它实现了MapReduce编程模式和框架,能在由大量计算机组成的集群中运行海量数据并进行分布式计算。1.1.5Hadoop的生态系统Hadoop由很多子项目组成,其中HDFS和MapReduce是两个最基础,最重要的成员。1.2Hadoop平台的安装与配置1.2.1Hadoop集群的安装创建虚拟机(注意至少创建2台虚拟机)安装Linux安装JDK配置SSH安装和配置Hadoop2.7.11.2.2测试Hadoop(1)传送Hadoop到各从节点(主节点)$cd~$scp-rhadoop-2.7.2hadoop@slavel:~/(2)格式化文件系统(主节点)$hadoopnamenode-format(3)启动Hadoop(主节点)$cd~/hadoop-2.7.2/sbin$./start-all.sh123(4)查看master工作状态(主节点)(5)查看slave工作状态(从节点)(6)启动浏览器,浏览(7)运行测试实例(主节点)$cd~/Hadoop-2.7.2/share/hadoop/mapreduce$hadoopjarhadoop-mapreduce-examples-2.7.2.jarpi10101.3Hadoop分布式文件系统1.3.1HDFS概述(1)HDFS是HadoopDistributedFileSystem的缩写,是ApacheHadoop项目的一个子项目,也是Google的GFS分布式文件系统开源实现。(2)HDFS支持海量数据的存储,允许将很多计算机组成存储集群,其中的每一台计算机称为一个节点。通过构建一个能跨越计算机系统的单一的文件命名空间,HDFS实现了大数据文件的分布式存储。(3)HDFS是一个主从(master/slave)结构模型。从用户角度来看,它和传统的文件系统一样,可以通过目录路径对文件执行操作一个HDFS集群是由一个NameNode和若千个DataNode组成的。1.3.2数据块HDFS支持文件的“一次写入多次读写”模型。默认的数据块大小是128MB。1241.3.3元数据节点元数据信息采用文件命名空间镜像(namespaceimage)及编辑日志(editlog)方式进行保存。1.3.4元数据从类型上讲,元数据有三类重要信息:1、文件和目录自身的属性信息,例如文件名、目录名、父目录信息、文件大小、创建时间、修改时间等。2、记录文件内容存储相关信息,例如文件分块情况、副本个数、每个副本所在的DataNode信息(映射关系)等3、记录HDFS中所有DataNode的信息,用于DataNode管理。第三类信息不存储在硬盘上,而是在系统启动时从DataNode收集而成。1.3.5HDFS文件的读写HDFS是使用Java语言构建,任何支持Java编程的机器都能运行HDFS。在设计上,NameNode不会主动发起PRC,而是响应来自客户端或DataNode的PRC请求。1251.3.6HDFSShell操作1.Shell命令介绍HDFSShell是由一系列类似LinuxShell的操作命令组成。借助这些命令,用户可以完成HDFS文件的复制、删除和查找等操作,也可以完成HDFS与Linux本地文件系统的交互。2.文件操作命令1)显示与指定path匹配的目录信息$hadoopfs-ls/2)在指定的path中新建子目录$hadoopfs-mkdir/test1/test2$hadoopfs-mkdir-p/x/y/x(-p选项表示创建子目录时先检查路径是否存在,若不存在则同时创建相应的各级目录。)3)创建-一个空文件$hadoopfs-touchz/test1/abc.txt1.4Hadoop分布式计算框架1.4.1MapReduce的解决方案基本思想:分而治之第一步:数据预处理第二步:生成初始key-value键值对第三步:映射转换第四步:合并映射结果并排序第五步:归约最终结果1261.4.2框架的组成1.4.3YERN工作流程1.4.4数据的混洗处理MapReduce框架会确保每个reduce的输入都是按key排序的。系统执行排序的过程(将map输出作为输入传给reduce)称为shuffle(即混洗)。shuffle的职责就是一把map的输出结果有效地传送到reduce端。1271.4.5作业的调度资源调度器是HadoopYARN中最核心的组件之一,是ResourceManager中一个插拔式的服务组件,负责整个集群资源(Container)的管理和分配。YARN采用了动态资源分配机制,当前YARN仅支持内存和CPU两种资源类型的管理和分配。Hadoop中的调度器包含以下三种:FIFO调度器、Capacity调度器、Fair调度器1.4.6MapReduce示例演示1.5Spark概述1.5.1Spark的特点Spark是用Scala语言编写,基于内存的计算框架,支持Scala、Java和Python语言,具有简洁、丰富的接口,提供统一的RDD编程模型,是一个整合能力强的框架。Spark具有以下特点1.速度快2.易用性3.通用性4.跨平台1.5.2Spark的数据模型(1)RDD的介绍Spark采用统一的抽象数据集RDD来存储正在被处理的大数据,这种建立在统一数据模型之.上的计算模式,使得它可以以基本一致的方式应对不同的大数据处理场景。RDD(即ResilientDistributedDatasets,弹性分布式数据集),是Spark的核心数据结构,是-一个容错的、并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并能控制数据的分区。通过RDD的操作形成整余128Spark程序。(2)RDD的特征1)只读。有利于恢复出错的RDDc2)容错性。RDD中有记录之前的依赖关系,依赖关系中记录算子和分区,可以很容易地重新生成。3)分布性。可以让用户显式地将数据存储到磁盘和内存中,并能控制数据的分区。一个RDD可以包含多个分区。4)RDD还提供了一组丰富的操作来操作这些数据。诸如map、flatMap、filter等以支持常见的数据运算。第2章实验总结2.1Spark实现单词计数2.1.1任务描述用Spark方法实现单词计数,并对重复单词进行筛选2.1.2任务分析找出包含apple的行;将包含apple的行按照“,”进行分割,得到一个列表集合;将集合中重复的单词去掉;将数据存储到hdfs中的/output目录下2.1.3任务设计1291)首先touch一个a.txt文件2)加载文本,产生弹性分布