一、大数据介绍
1、为什么使用大数据技术
数据量越来越大,数据分析的实时性越来越强,数据结果应用范围越来越广。(从用户的访问量、量、访问时间、访问频率,市场可以得到很多信息)
2、大数据的定义
数据收集、数据清洗、数据处理就是大数据技术的整个流程。
二、大数据应用领域
1.广告
广告投放 广告策略
2.电信
深度包检测 流失分析 网络质量
3.金融
风险识别(借贷款) 预测(12306买票换乘)
4.能源生物
基因组分析 地质分析
5.安全
入侵检测 图像识别
6.社交游戏
流失分析 社交推荐 使用分析
7.电商零售
推荐系统 交易分析
三、大数据技术处理框架
1、什么是大数据处理框架
处理框架和处理引擎负责对数据系统中的数据进行计算虽然“引擎”和“框架”之间的区别没有什么权威的定义,但大部分时候可以将前者定义为实际负责处理数据操作的组件,后者则可定义为承担类似作用的一系列组件。(ELK日志监控处理框架)
2、大数据处理框架有哪些
①仅批处理框架(滴滴打车数据量10个T一批处理)
用于批量处理大数据集的处理框架,可对整个数据集进行操作
例如:
Apache Hadoop,一种以MapReduce作为默认处理引擎批处理框架
②仅流处理框架(12306就是用流处理框架,数据的实时性很强,数据流找不到数据头和尾)
用于对随时进入系统的数据进行计算,是一种“无数据边界”的操作方式。
例如:
Apache Storm
Apache Samza
③混合处理框架
一些大数据处理框架可同时处理批处理和流处理工作负载
例如:
Apache Spark
Apache Flink
四、hadoop生态圈
1、项目定义
Apache Hadoop项目用于高可用,可扩展的分布式计算的开源软件
Apache Hadoop是一个大数据处理框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集
Apache Hadoop可以从单个服务器扩展到数千台计算机
Apache Hadoop集群中每台计算机都提供本地计算和存储
Apache Hadoop集群不是依靠硬件来提供高可用性,而是设计了用于检测和处理应用程序层的故障,从而在计算机集群之上提供高可用性服务。
开源软件
大数据处理架构
单台服务可以,数千台服务器
每台服务器都存自己的数据及运算自己的数据
把硬件故障认为常态,通过软件把控故障
2、核心项目
Hadoop分布式文件系统(HDFS):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问。Hadoop YARN:作业调度和集群资源管理的框架
Hadoop MapReduce:基于YARN的系统,用于并行处理大型数据集
Hadoop Common:支持其他Hadoop模块的常用实用程序。
Hadoop Ozone: Hadoop集群所提供的对象存储。
3、相关项目
Ambari
基于Web的工具,用于配置,管理和监控Apache Hadoop集群,包括对Hadoop HDFS MapReduce,Hive,HCatalog,HBase,Zookeeper,Oozie,Pig和Sqoop的支持。
Ambari还提供了一个用于查看集群运行状况的仪表板,例如热图,以及可视化查看MapReduce,Pig和oHive应用程序的功能,以及以用户友好的方式诊断其性能特征的功能。
Spark
用于Hadoop数据的快速通用计算引擎。Spark提供了一种简单而富有表现力的编程模型,支持广泛的应用程序,包括ETL,机器学习,流处理和图形计算。
ZooKeeper
用于分布式应用程序的高性能协调服务。
核心项目 hdfs mapreduce yarn
相关项目 ambari hbase hive spark zookeeper
五、hadoop核心项目分布式文件系统HDFS
1、文件系统定义
HDFS (Hadoop Distributed File System,Hadoop分布式文件系统)它是一个高度容错性的系统它适合部署在廉价的机器上它能提供高吞吐量的数据访问它适合那些有着超大数据集(large data set)的应用程序(超大数据集例如:海量数据分析、机器学习等)
2、文件系统特点
支持大数据文件
非常适合上TB级别的大文件或者一堆大数据文件的存储,如果文件只有几个G甚至更小就没啥意思了
支持文件分块存储,HDFS会将一个完整的大文件平均分块存储到不同计算节点上,它的意义在于读取文件时可以同时从多个计算节点上读取不同区块的文件,多主机读取比单主机读取效率要高得多。
支持一次写入,多次读取,顺序读取( 流式数据访问)这种模式跟传统文件不同,它不支持动态改变文件内容,而是要求让文件一次写入就不做变化,要变化也只能在文件未添加内容。
支持廉价硬件
HDFS可以部署在普通PC机上,这种机制能够让给一些公司用几十台廉价的计算机就可以撑起一个大数据集群。
支持硬件故障
HDFS认为所有计算机都可能会出问题,为了防止某个主机失效读取不到该主机的块文件,它将同一个文件块副本分配到其它某几个主机上,如果其中一台主机失效,可以讯速找另一块副本取文件。
总结:支持大文件存储 分块存储 支持廉价硬件 支持硬件故障
3、文件系统关键词
Block
最基本的存储单位;将文件进行分块处理,通常是128M/块,例如:256M文件会被分为2个Block.
Hadoop集群架构(主从),类似mysql、ceph、LB(主:调度器 从realserver)
NameNode(主)(最好做高可用)
用于保存整个文件系统的目录信息
文件信息及分块信息,这是由唯一一台主机专门保存,当然这台主机如果
出错,NameNode就失效了。
接收用户的操作请求
维护文件系统的目录结构
管理文件和Block之间的映射管理
管理 block 和 DataNode 之间的映射
DataNode(从节点)
分布在廉价的计算机上,用于存储Block块文件。文件被分成块存储到 DataNode 的磁盘上
每个Block(块)可以设置多副本
4、hdfs写数据流程
总结:客户端向namenode发起文件上传请求
客户端向datanode发起建立连接请求
客户端向datanode上传存储数据(block只要一个成功上传,NameNode会自动同步)
5、hdfs读数据流程
总结:和存储文件一样必须通过NameNode门户,只不过读取文件过程很简单,不是单一block读取,多个block同时读取带宽大,速度也快。
6、Hadoop核心项目编程模型
1、MapReduce作用
通过对HDFS分布式文件系统的了解,我们已经可以把海量数据存储在集群中DataNode之上了,但这仅是Hadoop工作的第一步,那么如何从海量的数据中找到我们所需要的数据呢,这就是MapReduce要做的事情了。
例如:1+2 + 3+4 + 5+6 =? 客户需要马上知道自己的5亿资金还有多少(各个分行分头统计,最后报给总行,效率快)
Map: 1+2=3 3+4=7 5+6=11
Reduce: 3+7+11=21
结论
将大的数据分析分成小块逐个分析,最后再将提取出来的数据汇总分析,最终获得我们想要的内容。通俗说MapReduce是一套从海量源数据提取、分析元素,最后返回结果集的方法
当然怎么分块分析,怎么做Reduce操作非常复杂,Hadoop已经提供了数据分析的实现,我们只需要编写简单的需求命令即可达成我们想要的数据
map 把大数据分成小数据,进行计算通过洗牌的方式给reduce
reduce 对map的结果进行汇总
2、MapReduce工作流程
当向MapReduce 框架提交一个计算作业时,它会首先把计算作业拆分成若干个Map 任务,然后分配到不同的节点(DataNode)上去执行,每一个Map 任务处理输入数据中的一部分,当Map 任务完成后,它会生成一些中间文件,这些中间文件将会作为Reduce 任务的输入数据。Redue 任务的主要目标就是把前面若干个Map 的输出汇总到一起并输出。
7、hadoop部署
1、单机部署
1.1、单机部署介绍
单机(本地模式)是Hadoop的默认部署模式。
当配置文件为空时,Hadoop完全运行在本地
不需要与其他节点交互,单机(本地模式)就不使用HDFS(使用的是本地的内存存储数据),也不加载任何Hadoop的守护进程
该模式主要用于开发调试MapReduce程序的应用逻辑。
1.2、获取部署软件包
1.2.1、获取hadoop软件包
hadoop.apache.org
1.2.2、获取JDK
Java Downloads | Oracle
建议下载二进制包tar.gz
1.3、部署
1.3.1、jdk部署
[root@localhost ~]#tar xf jdk-8u191-linux-x64.tar.gz -C /usr/local [root@localhost ~]# cd /usr/local [root@localhost local]# mv jdk1.8.0_191 jdk
1.3.2、hadoop部署
[root@localhost ~]# tar xf hadoop-2.8.5.tar .gz -C /opt [root@localhost ~]# cd /opt [root@localhost opt]# mv hadoop-2.8.5 hadoop
1.3.3、Linux系统环境变量
[root@localhost ~]#vim /etc/profile export JAVA_HOME=/usr/1ocal/jdk export HADOOP_HOME=/opt/hadoop export PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:$PATH
$PATH是原来的环境变量,放在最后面,所以jdk就是用下载解压的。
G切换到vim编辑器最后一行编辑完成之后必须 source /etc/profile
1.3.4、应用测试
[root@localhost ~]#mkdir /home/input [root@localhost ~]#cp /opt/hadoop/etc/hadoop/*.xml /home/input [root@localhost ~]#hadoop jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount /home/input/ /home/output [root@locaThost ~]#cat /home/output
hadoop-mapreduce-examples-2.8.5.jar wordcount
使用jar包中的wordcount方法去统计词频
2、伪分布式部署
1、伪分布式部署介绍
Hadoop守护进程运行在本地机器上,模拟一个小规模的的集群该模式在单机模式之上增加了代码调试功能,允许你检查内存使用情况,HDFS输入/输出,以及其他的守护进程交互。
2、修改配置文件
获取软件包和配置环境变量省略
主要涉及的配置文件有:hadoop-env.sh、mapred-env.sh、yarn-env.sh、core-site.xml
2.1、修改hadoop-env.sh、mapred-env.sh、yarn-envsh文件中JAVA HOME参数
[root@localhost ~]#vim $[HADOOP_HOME]/etc/hadoop/hadoop-env.sh 修改JAVA_HOME参数为: export JAVA_HOME=/usr/local/jdk
2.2、修改 core-site.xml
[root@localhost ~]#vim $[HADOOP_HOME]/etc/hadoop/core-site.xml (1)配置fs.defaultFs(2)配置hadoop临时目录 fs.defaultFS hdfs://hd1:8020 hadoop.tmp.dir /opt/data/tmp
hd1是主机名,可自定义 vim /etc/hosts
泛结构化格式必须有头有尾
配置临时目录前,请先创建此目录,不创建也可以(hadoop集群启动时会自动创建临时目录)。HDFS的NameNode数据默认都存放这个目录下,查看*-default.xml等默认配置文件,就可以看到很多依赖${hadoop.tmp.dir}的配置
默认的hadoop.tmp.dir是/tmp/hadoop-s{username],此时有个问题就是NameNode会将HDFS的元数据存储在这个/tmp目录下,如果操作系统重启了,系统会清空/tmp目录下的东西,导致NameNode元数据丢失,是个非常严重的问题,所有我们应该修改这个路径。
2.3、配置hdfs-site.xml
[root@localhost ~]#vim ${HADOOP_HOME}/etc/hadoop/hdfs-site.xmldfs.repication 1
dfs.replication配置的是HDFS存储时的备份数量,因为这里是伪分布式环境只有一个节点,所以这里设置为1
2.4、格式化hdfs
[root@localhost ~]#hdfs namenode -format
格式化是对HDFS这个分布式文件系统中的DataNode进行分块,统计所有分块后的初始元数据存储在NameNode中。
格式化后,查看core-site.xml里hadoop.tmp.dir(本例是/opt/data目录)指定的目录下是否有了dfs目录
如果有,说明格式化成功。
2.5、查看hdfs的临时目录
[root@localhost ~]#ls /opt/data/tmp/dfs/name/current
fsimage是NameNode元数据在内存满了后,持久化保存到的文件
fsimage*.md5 是校验文件,用于校验fsimage的完整性
seen_txid 是hadoop的版本
vession文件里保存:
namespacelD:NameNode的唯一ID。
clusterID:集群ID,NameNode和DataNode的集群ID应该一致,表明是一个集群
3、启动角色
请把hadoop安装目录中的sbin目录中的命令添加到/etc/profile环境变量中,不然无法使用hadoop-
daemon.sh
3.1、启动namenode
3.2、启动datanode
3.3、验证
验证文件系统只需要创建文件夹上传文件进去,再删除就行。
-put上传本地文件到hdfs文件系统 -get 下载文件系统中的文件到本地
3、配置yarn
A framework for job scheduling and cluster resource management.
功能:任务调度和集群资源管理
YARN (Yet An other Resouce Negotiator) 另一种资源协调者
是Hadoop 2.0新增加的一个子项目,弥补了Hadoop 1.0(MRv1)扩展性差、可靠性资源利用率低以及无法支持其他计算框架等不足。
Hadoop的下一代计算框架MRv2将资源管理功能抽象成一个通用系统YARNMRv1的jobtracker和tasktrack也不复存在,计算框架(MR, storm,spark)同时运行在之上,使得hadoop进入了多计算框架的弹性平台时代
yarn是一种资源协调者
从mapreduce拆分而来
带来的好处:让hadoop平台性能及扩展性得到更好发挥
3.1、使用yarn的好处
在某些时间,有些资源计算框架的集群紧张,而另外一些集群资源空闲。那么这框架共享使用一个则可以提高利率些集群资源空闲。
维护成本低
数据共享,避免了集群之间移动数据
YARN主从架构
ResourceManager 资源管理
NodeManager 节点管理
ResourceManager(主)
负责对各个NodeManager 上的资源进行统一管理和任务调度
NodeManager(从)
在各个计算节点运行,用于接收RM中ApplicationsManager 的计算任务、启动/停止任务、和RM中Scheduler 汇报并协商资源、监控并汇报本节点的情况。
4、配置MapReduce使用YARN框架
4.1、配置mapred-site.xml指定mapreduce使用yarn框架
默认没有mapred-site.xml文件,但是有个mapred-sitexml.template配置模板文件。复制模板生成mapred-site.xml。
[root@localhost ~]#cp /opt/hadoop/etc/hadoop/mapred-site.xml.template /opt/hadoop/etc/hadoop/mapred-site.xml
mapreduce.framework.name yarn
4.2、配置yarn-site.xml
yarn.nodemanager.aux-services配置了yarn的默认混洗方式,选择为mapreduce的默认混洗算法yarn.resourcemanager.hostname指定了Resourcemanager运行在哪个节点(主机)上。
启动四个服务,前两个服务是hdfs的namenode和datanode
后两个服务是yarn的resourceManager和nodeManager
测试:用hadoop客户端工具里面的jar包中的wordcount词频统计函数计算写入hdfs中的数据
输出到output
在Hadoop的share目录里,自带了一些jar包,里面带有一些mapreduce实例小例子,位置在
share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5ar,可以运行这些例子体验刚搭建好的hadoop平台
还可以用绝对路径运行实例
[root@localhost ~]#yarn jar /hadoop安装路径/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount /test/input /test/output
YARN的Web页面
YARN的Web客户端端口号是8088,通过http://hd1:8088/可以查看
停止hadoop服务
猜你喜欢
- 10小时前thinkphp 命令行执行
- 10小时前udf提权
- 10小时前kafka服务器连接出现:[NetworkClient.java:935] [Producer clientId=producer-1] Node -1 disconnected原因分析
- 10小时前数据湖架构Hudi(二)Hudi版本0.12源码编译、Hudi集成spark、使用IDEA与spark对hudi表增删改查
- 10小时前前端超好玩的小游戏合集来啦--周末两天用html5做一个3D飞行兔子萝卜小游戏
- 10小时前[Halcon&3D] 3D手眼标定理论与示例解析
- 5小时前美赞臣亲舒(美赞臣亲舒水解奶粉可以长期吃吗)
- 4小时前时光不负有心人(星光照亮赶路人,时光不负有心人)
- 1小时前氧气由什么构成(氧气由什么构成?)
- 1小时前出世与入世(中国古代文人的出世与入世)
网友评论
- 搜索
- 最新文章
- 热门文章