大数据与Hadoop
1、大数据
1.1、大数据时代
- 三次信息化浪潮
- 存储设备容量不断增加
- CPU处理能力大幅提升
- 网络带宽不断增加
- 发展历程
1.2 大数据概念
-
大数据通俗的解释就是海量的数据,顾名思义,大就是多 广的意思,而数据就是信息、技术以及数据资料,合起来就是多而广的信息、技术、以及数据资料。
-
大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)
1.3 大数据的影响
- 在思维方式方面,大数据完全颠覆了传统的思维方式:
- – 全样而非抽样
- – 效率而非精确
- – 相关而非因果
- 在社会发展方面,大数据决策逐渐成为一种新的决策方式,大数据应用有力促进了信息技术与各行业的深度融合,大数据开发大大推动了新技术和新应用的不断涌现
- 在就业市场方面,大数据的兴起使得数据科学家成为热门职业
- 在人才培养方面,大数据的兴起,将在很大程度上改变中国高校信息技术相关专业的现有教学和科研体制
1.4 大数据的应用
大数据无处不在,包括金融、人工智能、汽车、零售、餐饮、电信、能源、政务、医疗、体育、娱乐等在内的社会各行各业都已经融入了大数据的印迹。
1.5 大数据关键技术
技术层面 | 功能 |
---|---|
数据采集 | 利用ETL工具将分布的、异构数据源中的数据如关系数据、平面数据文件等,抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础;或者也可以把实时采集的数据作为流计算系统的 |
数据存储和管理 | 利用分布式文件系统、数据仓库、关系数据库、NoSQL数据库、云数据库等,实现对结构化、半结构化和非结构化海量数据的存储和管理 |
数据处理与分析 | 利用分布式并行编程模型和计算框架,结合机器学习和数据挖掘算法,实现对海量数据的处理和分析;对分析结果进行可视化呈现,帮助人们更好地理解数据、分析数据 |
数据隐私和安全 | 在从大数据中挖掘潜在的巨大商业价值和学术价值的同时,构建隐私数据保护体系和数据安全体系,有效保护个人隐私和数据安全 |
- 两大核心技术
1.6 大数据计算模式
大数据计算模式 | 解决问题 | 代表产品 |
---|---|---|
批处理计算 | 针对大规模数据的批量处理 | MapReduce、Spark等 |
流计算 | 针对流数据的实时计算 | Flink、Storm、S4、Flume、Streams、Puma、DStream、Super Mario、银河流数据处理平台 |
图计算 | 针对大规模图结构数据的处理 | Pregel、GraphX、Giraph、PowerGraph、Hama |
查询分析计算 | 大规模数据的存储管理和查询分析 | Dremel、Hive、Cassandra、Impala等 |
1.7 大数据产业
- 大数据产业是指一切与支撑大数据组织管理和价值发现相关的企业经济活动的集合。
产业链环节 | 包含内容 |
---|---|
IT基础设施层 | 包括提供硬件、软件、网络等基础设施以及提供咨询、规划和系统集成服务的企业,比如,提供数据中心解决方案的IBM、惠普和戴尔等,提供存储解决方案的EMC,提供虚拟化管理软件的微软、思杰、SUN、Redhat等 |
数据源层 | 大数据生态圈里的数据提供者,是生物大数据(生物信息学领域的各类研究机构)、交通大数据(交通主管部门)、医疗大数据(各大医院、体检机构)、政务大数据(政府部门)、电商大数据(淘宝、天猫、苏宁云商、京东等电商)、社交网络大数据(微博、微信、人人网等)、搜索引擎大数据(百度、谷歌等)等各种数据的来源 |
数据管理层 | 包括数据抽取、转换、存储和管理等服务的各类企业或产品,比如分布式文件系统(如Hadoop的HDFS和谷歌的GFS)、ETL工具(Informatica、Datastage、Kettle等)、数据库和数据仓库(Oracle、MySQL、SQL Server、HBase、GreenPlum等) |
数据分析层 | 包括提供分布式计算、数据挖掘、统计分析等服务的各类企业或产品,比如,分布式计算框架MapReduce、统计分析软件SPSS和SAS、数据挖掘工具Weka、数据可视化工具Tableau、BI工具(MicroStrategy、Cognos、BO)等等 |
数据平台层 | 包括提供数据分享平台、数据分析平台、数据租售平台等服务的企业或产品,比如阿里巴巴、谷歌、中国电信、百度等 |
数据应用层 | 提供智能交通、智慧医疗、智能物流、智能电网等行业应用的企业、机构或政府部门,比如交通主管部门、各大医疗机构、菜鸟网络、国家电网等 |
1.8 大数据与云计算、物联网的关系
- 云计算、大数据和物联网代表了IT领域最新的技术发展趋势,三者相辅相成,既有联系又有区别。
1.8.1、云计算
云计算实现了通过网络提供可伸缩的、廉价的分布式计算能力,用户只需要在具备网络接入条件的地方,就可以随时随地获得所需的各种IT资源。
-
云计算关键技术
- 云计算关键技术包括:虚拟化、分布式存储、分布式计算、多租户等
-
云计算数据中心
- 云计算数据中心是一整套复杂的设施,包括刀片服务器、宽带网络连接、环境控制设备、监控设备以及各种安全装置等
- 数据中心是云计算的重要载体,为云计算提供计算、存储、带宽等各种硬件资源,为各种平台和应用提供运行支撑环境
- 全国各地推进数据中心建设
-
云计算产业
-
云计算产业作为战略性新兴产业,近些年得到了迅速发展,形成了成熟的产业链结构,产业涵盖硬件与设备制造、基础设施运营、软件与解决方案供应商、基础设施即服务(IaaS)、平台即服务(PaaS)、软件即服务(SaaS)、终端设备、云安全、云计算交付/咨询/认证等环节
1.8.2、物联网
- 物联网概念
物联网是物物相连的互联网,是互联网的延伸,它利用局部网络或互联网等通信技术把传感器、控制器、机器、人员和物等通过新的方式联在一起,形成人与物、物与物相联,实现信息化和远程管理控制。
- 物联网关键技术
物联网中的关键技术包括识别和感知技术(二维码、RFID、传感器等)、网络与通信技术、数据挖掘与融合技术等。
- 物联网应用
物联网已经广泛应用于智能交通、智慧医疗、智能家居、环保监测、智能安防、智能物流、智能电网、智慧农业、智能工业等领域,对国民经济与社会发展起到了重要的推动作用。
- 物联网产业
完整的物联网产业链主要包括核心感应器件提供商、感知层末端设备提供商、网络提供商、软件与行业解决方案提供商、系统集成商、运营及服务提供商等六大环节。
1.8.3、关系
云计算、大数据和物联网代表了IT领域最新的技术发展趋势,三者既有区别又有联系。
2、hadoop概述
2.1 Hadoop简介
- Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构
- Hadoop是基于Java语言开发的,具有很好的跨平台特性,并且可以部署在廉价的计算机集群中
- Hadoop的核心是分布式文件系统HDFS(Hadoop Distributed File System)和MapReduce
- Hadoop被公认为行业大数据标准开源软件,在分布式环境下提供了海量数据的处理能力
- 几乎所有主流厂商都围绕Hadoop提供开发工具、开源软件、商业化工具和技术服务,如谷歌、雅虎、微软、思科、淘宝等,都支持Hadoop.
2.2 Hadoop发展简史
Hadoop最初是由Apache Lucene项目的创始人Doug Cutting开发的文本搜索库。Hadoop源自始于2002年的Apache Nutch项目——一个开源的网络搜索引擎并且也是Lucene项目的一部分。
-
Nutch
- Hadoop最早起源于Nutch。
- Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能
- 但随着抓取网页数量的增加,遇到了严重的可扩展性问题——如何解决数十亿网页的存储和索引问题。
-
Google
- 2003年、2004年谷歌发表的两篇论文为该问题提供了可行的解决方案。
- GFS : Google File System
- MapReduce :数据计算的方法
-
Doug cutting 花费了自己的两年业余时间,将论文实现了出来
- 2008年1月,HADOOP成为Apache顶级项目
在2004年,Nutch项目也模仿GFS开发了自己的分布式文件系统NDFS(Nutch Distributed File System),也就是HDFS的前身
• 2004年,谷歌公司又发表了另一篇具有深远影响的论文,阐述了MapReduce分布式编程思想
• 2005年,Nutch开源实现了谷歌的MapReduce到了2006年2月,Nutch中的NDFS和MapReduce开始独立出来,成为Lucene项目的一个子项目,称为Hadoop,同时,Doug Cutting加盟雅虎
• 2008年1月,Hadoop正式成为Apache顶级项目,Hadoop也逐渐开始被雅虎之外的其他公司使用
• 2008年4月,Hadoop打破世界纪录,成为最快排序1TB数据的系统,它采用一个由910个节点构成的集群进行运算,排序时间只用了209秒
•在2009年5月,Hadoop更是把1TB数据排序时间缩短到62秒。Hadoop从此名声大震,迅速发展成为大数据时代最具影响力的开源分布式开发平台,并成为事实上的大数据处理标准
- Hadoop
- 狭义上来说,hadoop就是单独指代hadoop这个软件,
- 广义上来说,hadoop指代大数据的一个生态圈,包括很多其他的软件
2.3 Hadoop的特性
Hadoop是一个能够对大量数据进行分布式处理的软件框架,并且是以一种可靠、高效、可伸缩的方式进行处理的,它具有以下几个方面的特性:
- 高可靠性
- 高效性
- 高可扩展性
- 高容错性
- 成本低
- 运行在Linux平台上
- 支持多种编程语言
2.4 Hadoop的应用现状
- Hadoop凭借其突出的优势,已经在各个领域得到了广泛的应用,而互联网领域是其应用的主阵地
- 2007年,雅虎在Sunnyvale总部建立了M45——一个包含了4000个处理器和1.5PB容量的Hadoop集群系统
- Facebook作为全球知名的社交网站,Hadoop是非常理想的选择,Facebook主要将Hadoop平台用于日志处理、推荐系统和数据仓库等方面
- 国内采用Hadoop的公司主要有百度、淘宝、网易、华为、中国移动等,其中,淘宝的Hadoop集群比较大
2.5、Hadoop版本演变
Apache Hadoop版本分为3代,
- Hadoop 1.0
- 包含三个大版本,分别是0.20.x,0.21.x和0.22.x,其中,0.20.x最后演化成1.0.x,变成了稳定版。
- 0.21.x和0.22.x则增加了NameNode HA等新的重大特性。
- Hadoop 2.0
- 包含两个版本,分别是0.23.x和2.x,它们完全不同于Hadoop 1.0,是一套全新的架构,均包含HDFS Federation和YARN两个系统,
- 相比于0.23.x,2.x增加了NameNode HA和Wire-compatibility两个重大特性
- hadoop 3.0
- Hadoop 2.0是基于JDK 1.7开发的,而JDK 1.7在2015年4月已停止更新,于是Hadoop社区基于JDK1.8重新发布一个新的Hadoop版本,也就是Hadoop3.0
3 、Hadoop项目结构
3.1、hadoop 组成
- Hadoop Common 基础型功能
- Hadoop Distributed File System 负责存放数据
- Hadoop YARN 负责资源的调配
- Hadoop MapReduce 大数据的计算框架
- Hadoop Ozone 数据存放到仓库
- Hadoop Submarine 机器学习引擎
3.2 hadoop生态圈组成
组件 | 功能 |
---|---|
HDFS | 分布式文件系统 |
MapReduce | 分布式并行编程模型 |
YARN | 资源管理和调度器 |
Tez | 运行在YARN之上的下一代Hadoop查询处理框架 |
Hive | Hadoop上的数据仓库 |
HBase | Hadoop上的非关系型的分布式数据库 |
Pig | 一个基于Hadoop的大规模数据分析平台,提供类似SQL的查询语言Pig Latin |
Sqoop | 用于在Hadoop与传统数据库之间进行数据传递 |
Oozie | Hadoop上的工作流管理系统 |
Zookeeper | 提供分布式协调一致性服务 |
Storm | 流计算框架 |
Flume | 一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统 |
Ambari | Hadoop快速部署工具,支持Apache Hadoop集群的供应、管理和监控 |
Kafka | 一种高吞吐量的分布式发布订阅消息系统,可以处理消费者规模的网站中的所有动作流数据 |
Spark | 类似于Hadoop MapReduce的通用并行框架 |
3.3 、hadoop数据流
4 、Hadoop的安装与使用
- liunx选择Centos7 64位
- 建议电脑16G内存
- 开三台虚拟机
主机\Hadoop节点 | NameNode | SecondaryNameNode | DataNode |
---|---|---|---|
node01 | * | * | |
node02 | * | * | |
node03 | * |
4.1、准备安装环境
-
[root@node01 ~]# tar -zxvf hadoop-3.1.2.tar.gz [root@node01 ~]# mv hadoop-3.1.2 /opt/yjx/ [root@node01 ~]# cd /opt/yjx/hadoop-3.1.2/etc/hadoop/
4.2、修改集群环境
-
[root@node01 hadoop]# vim hadoop-env.sh
-
##直接在文件的最后添加 export JAVA_HOME=/usr/java/jdk1.8.0_231-amd64 export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root
-
4.3、修改配置文件
-
[root@node01 hadoop]# vim core-site.xml
-
<property> <name>fs.defaultFS</name> <value>hdfs://node01:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/var/yjx/hadoop/full</value> </property>
-
-
[root@node01 hadoop]# vim hdfs-site.xml
-
<property> <name>dfs.namenode.secondary.http-address</name> <value>node02:50090</value> </property> <property> <name>dfs.namenode.secondary.https-address</name> <value>node02:50091</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property>
-
-
[root@node01 hadoop]# vim workers
-
node01 node02 node03
-
4.4、拷贝分发软件
-
将配置好的软件分发到其他主机
-
[root@node01 ~]# cd /opt/yjx/ [root@node01 yjx]# scp -r hadoop-3.1.2 root@node02:`pwd` [root@node01 yjx]# scp -r hadoop-3.1.2 root@node03:`pwd`
-
4.5、修改环境变量
-
[root@node01 hadoop]# vim /etc/profile
-
export HADOOP_HOME=/opt/yjx/hadoop-3.1.2 export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
-
-
将环境变量拷贝到其他主机
-
[root@node01 yjx]# scp /etc/profile root@node02:/etc/profile [root@node01 yjx]# scp /etc/profile root@node03:/etc/profile
-
-
重新加载三台服务器的环境变量
-
【123】# source /etc/profile
-
4.6、格式化NameNode
-
[root@node01 yjx]# hdfs namenode -format
-
[root@node01 yjx]# start-dfs.sh
-
Starting namenodes on [node01] Last login: Fri Oct 30 21:32:11 CST 2020 from 192.168.58.1 on pts/0 node01: Warning: Permanently added 'node01,192.168.58.101' (ECDSA) to the list of known hosts. Starting datanodes Last login: Fri Oct 30 22:06:12 CST 2020 on pts/0 node03: Warning: Permanently added 'node03,192.168.58.103' (ECDSA) to the list of known hosts. node02: Warning: Permanently added 'node02,192.168.58.102' (ECDSA) to the list of known hosts. node01: Warning: Permanently added 'node01,192.168.58.101' (ECDSA) to the list of known hosts. node03: WARNING: /opt/yjx/hadoop-3.1.2/logs does not exist. Creating. node02: WARNING: /opt/yjx/hadoop-3.1.2/logs does not exist. Creating. Starting secondary namenodes [node02] Last login: Fri Oct 30 22:06:14 CST 2020 on pts/0 node02: Warning: Permanently added 'node02,192.168.58.102' (ECDSA) to the list of known hosts.
-
4.7、测试集群
- http://node01:9870
- [root@node01 ~]# hdfs dfs -mkdir -p /yjx
- [root@node01 ~]# hdfs dfs -put zookeeper-3.4.5.tar.gz /yjx/
- [root@node01 ~]# hdfs dfs -D dfs.blocksize=1048576 -put zookeeper-3.4.5.tar.gz /yjx/
- Hadoop的Shell命令
- http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html
- https://www.cnblogs.com/duanxz/p/3799467.html
4.8、关闭集群
-
[root@node01 ~]# stop-dfs.sh
-
Stopping namenodes on [node01] Last login: Fri Oct 30 22:06:20 CST 2020 on pts/0 node01: Warning: Permanently added 'node01,192.168.58.101' (ECDSA) to the list of known hosts. Stopping datanodes Last login: Fri Oct 30 22:16:34 CST 2020 on pts/0 node03: Warning: Permanently added 'node03,192.168.58.103' (ECDSA) to the list of known hosts. node02: Warning: Permanently added 'node02,192.168.58.102' (ECDSA) to the list of known hosts. node01: Warning: Permanently added 'node01,192.168.58.101' (ECDSA) to the list of known hosts. Stopping secondary namenodes [node02] Last login: Fri Oct 30 22:16:35 CST 2020 on pts/0 node02: Warning: Permanently added 'node02,192.168.58.102' (ECDSA) to the list of known hosts.
-
-
关机拍摄快照
- [123]# shutdown -h now