1:什么是大数据:
一种规模大到获取,存储,管理,分析都大大超过了传统数据库软件工具的能力范围的数据集合
2:特点:
数据量大,类型繁多,处理速度快,价值密度低
3:在零售行业的应用:
精准定位零售行业市场;支持行业收益管理;挖掘零售行业新需求;
1:Hadoop优势:
2:Hadoop生态系统:
3:hadoop 1.X与Hadoop2.X区别:
Hadoop1.X的内核主要有:HDFS(分布式存储系统)和MapReduce(分布式计算框架)
Hadoop2.X的内核主要有:HDFS(分布式存储系统)和MapReduce(分布式计算框架)以及Yarn(资源管理平台)和其他工作机制的改变(Others)
Hadoop1.X中
1:HDFS由一个Namenode和多个Datanode组成,(注意:一个Datanode上存储的数据块不可以有相同的),其中Datanode负责存储数据,但是具体数据存储在哪一个Datanode上由Namenode决定。
2:MapReduce由一个Jobtracker和多个Tasktraker组成,Jobtraker负责接收计算任务,分配给Tasktraker执行,跟踪,并对其进行任务执行状况监控。
缺点:
1:HDFS中Namenode与Secondary Namenode单点故障,风险较大。其次Namenode内存受限不好扩展。且只有一个Namenode需要负责观理所有Datanode.
2:MapReduce中Jobtracker职责过多,访问压力太大,会影响系统稳定,并且MapReduce难以支持出自身外的框架。
Hadoop2.X:
1:可以同时启动多个Namenode,其中一个处于工作状态,一个处于随时待命的状态,(Hadoop HA=Hadoop 高可用),当一个Namenode宕机,可以在数据不丢失的情况下,自动切换到另一个Namenode持续提供服务。
2:将Jobtraker中的资源管理和作业控制分开,分别由ResourceManager(负责所有应用程序资源分配)和ApplicationMaster(负责管理一个应用程序)实现,其实就是引入了Yarn(资源管理平台,可以为各类应用程序进行资源管理和调度),可以实现个不同计算模型和各种应用之间的交互,使集群得到高效利用。
3:MapRuduce是运行在Yarn上的离线处理框架,运行环境不在是Jobtracker和Tasktrake等服务组成,而是变成通用资源管理Yarn和作业控制进程ApplicationMaster,提升了Mapreduce的速度和可用性。
1:Hadoop安装
(一)启动与关闭Hadoop:
单节点逐个启动:
hadoop-daemon.sh start namenode
hadoop-daemon.sh start DataNode
yarn-daemon.sh start recoursemanager
yarn-daemon.sh start nodemanager
hadoop-daemon.sh start secondarynamenode
start-dfs.sh
start-yarn.sh
2:通过UI查看Hadoop运行状态:
在Hadoop集群开放后默认开放了端口:
3:Hadoop集群配置文件:
将集群主节点的配置文件分发到其他子节点:
完成Hadoop集群主节点hadoop01的配置后,还需要将系统环境配置文件、JDK安装目录和Hadoop安装目录分发到其他子节点hadoop02和hadoop03上,具体指令:
$ scp /etc/profile hadoop02:/etc/profile
$ scp /etc/profile hadoop03:/etc/profile
$ scp -r /export/ hadoop02:/
$ scp -r /export/ hadoop03:/
6:Hadoop安装目录
7:虚拟机安装
过程:
8:虚拟机克隆
9:
命令:
source /etc/profile
hadoop namenode -format
hadoop fs
(适用于任何不同文件系统,例如本地文件系统和HDFS)hadoop dfs 和 hdfs dfs
(都只适用于HDFS文件系统)HDFS写数据原理:
2:HDFS的演变:
传统文件系统—分布式文件系统雏形–HDFS文件系统雏形–HDFS
3:HDFS基本概念:
5:HDFS的存储架构
6:HDFS的shell操作:
shell在计算机科学中俗称“壳”,是提供给使用者使用界面的进行与系统交互的软件,通过接收用户输入的命令执行相应的操作,Shell分为图形界面Shell和命令行式Shell。
3. hadoop fs -put -f install.log /
7:Hadoop的java API操作:
HDFS Shell本质上就是对Java API的应用,通过编程的形式操作HDFS,其核心是使用HDFS提供的Java API构造一个访问客户端对象,然后通过客户端对象对HDFS上的文件进行操作(增、删、改、查)。
在Java中操作HDFS,创建一个客户端实例主要涉及以下两个类:
Configuration:该类的对象封装了客户端或者服务器的配置,Configuration实例会自动加载HDFS的配置文件core-site.xml,从中获取Hadoop集群的配置信息。
FileSystem:该类的对象是一个文件系统对象
案例——使用Java API操作HDFS
搭建项目环境
创建一个项目名为“HadoopDemo”,包名为“com.itcast”的Maven项目,并在项目的pom.xml文件中引入hadoop-common、hadoop-hdfs、hadoop-client以及单元测试junit的依赖。
初始化客户端对象
首先在项目src文件夹下创建com.itcast.hdfsdemo包,并在该包下创建HDFS_CRUD.java文件,编写Java测试类,构建Configuration和FileSystem对象,初始化一个客户端实例进行相应的操作。
上传文件到HDFS
由于采用Java测试类来实现JavaApi对HDFS的操作,因此可以在HDFS_CRUD.java文件中添加一个testAddFileToHdfs()方法来演示本地文件上传到HDFS的示例。
从HDFS下载文件到本地
在HDFS_CRUD.java文件中添加一个testDownloadFileToLocal()方法,来实现从HDFS中下载文件到本地系统的功能。
目录操作
在HDFS_CRUD.java文件添加一个testMkdirAndDeleteAndRename()方法,实现目录的创建、删除、重命名的功能。
查看目录中的文件信息
在HDFS_CRUD.java文件中添加一个testListFiles()方法,实现查看目录中所有文件的详细信息的功能。
1:MapReduce核心思想:
分而治之:就是把一个复杂的问题,按照一定的“分解”方法分为等价的规模较小的若干部分,然后逐个解决,分别找出各部分的结果,把各部分的结果组成整个问题的结果
MapReduce是Hadoop系统核心组件之一,它是一种可用于大数据并行处理的计算模型、框架和平台,主要解决海量数据的计算,是目前分布式计算模型中应用较为广泛的一种
Map阶段:勇于对原始数据进行处理
Reduce阶段:对map阶段数据进行汇总
部分任务不一定需要reduce阶段可能只有map阶段,map阶段产生的数据直接写入HDFS中
有map产生相关key的输出都会集中在到Reduce中处理,reduce是最终的处理过程,其结果不会进行二次处理。
2:MapReduce工作过程
ReduceTask工作原理:
ReduceTask的工作过程主要经历了5个阶段,分别是Copy阶段、Merge阶段、Sort阶段、Reduce阶段和Write阶段。
MapTask工作原理:
MapTask作为MapReduce工作流程前半部分,它主要经历5个阶段,分别是Read阶段、Map阶段、Collect阶段、Spill阶段和Combiner阶段
Shuffle工作原理:
Shuffle是MapReduce的核心,它用来确保每个reducer的输入都是按键排序的。它的性能高低直接决定了整个MapReduce程序的性能高低,map和reduce阶段都涉及到了shuffle机制。