当前位置: 移动技术网 > IT编程>数据库>其他数据库 > hadoop

hadoop

2020年03月09日  | 移动技术网IT编程  | 我要评论

------------恢复内容开始------------

1、hadoop是什么?

  1. hadoop是一个apache基金会所开发的分布式系统基础框架(hive、hbase、spark都是基于hadoop架构进行数据存储)。
  2. 主要解决:海量数据存储和海量数据分析计算问题。
  3. 广义上来说,hadoop通常是指一个更广泛的概念-hadoop生态圈。

2、hadoop发展历史
  1)lucene框架是doug cutting开创的开源软件,用java书写代码,实现与google类似的全文搜索功能,他提供全文搜索
     引擎架构,包括完整的查询引擎和索引引擎。
  2)2001年年底 lucene成为apache基金会的一个子项目。
  3)对于海量数据的场景,lucene面对与google同样的困难,存储数据困难,检索速度慢。
  4)学习和模仿google解决这些问题的办法:微型版nutch。
  5)可以说google是hadoop的思想之源(google在大数据方面的三篇论文)。
gfs-->hdfs (g代表google) hadoop分布式文件系统
map-reduce-->mr
bigtable-->hbase
6)2003-2004 google公开了部分gfs和mapreduce思想的细节,以此为基础doug cutting等人用了2年
业余时间实现了dfs和mapreduce机制,使nutch性能飙升。
7)2005年hadoop成为lucene子项目nuntch的一部分正式引入apache基金会
8)2006年3月,map-reduce和nutch distributed file system(ndfs)分别被纳入hadoop的项目中
9)名字来源于doug cutting儿子的玩具大象
10)hadoop就此诞生并迅速发展,标志着大数据时代的来临
## 3.hadoop的优势
1)高可靠性:hadoop底层维护多个数据副本,所有即使hadoop某个计算元素出现故障,也不会导致数据的丢失。
2)高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。
3)高效性:在mapreduce的思想下,hadoop的并行工作的,以加快任务处理速度
4)高容错性:能够自动将失败的任务重新分配
### 1.hadoop组成(解决数据和计算问题)
1)hadoop1.x和hadoop2.x的区别
1)hadoop1.x组成
mapreduce(计算和资源调度)
hdfs(数据存储)
common(辅助工具)
2)hadoop2.x组成
mapreduce(计算)
yarn(资源调度)
hdfs(数据存储)
common(辅助工具)
2.hdfs架构概述
1)namenode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),
以及每个文件的块列表和块所在的datanode等。(目录)
2)datanode(dn):在本地文件系统中存储文件块的数据,以及数据的校验和(目录下实实在在的数据)
3)secondary namenode(2nn):用来监控hdfs状态的辅助后台,每个一段时间间获取hdfs元数据的快照
3.yarn 架构概述
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200218232104884.png?x-oss-process=image/watermark,type_zmfuz3pozw5nagvpdgk,shadow_10,text_ahr0chm6ly9ibg9nlmnzzg4ubmv0l3fxxzmzmdy0mzq3,size_16,color_ffffff,t_70)
1)resourcemanager(rm)主要作用:
(1)处理客户端请求
(2)监控nodemanager
(3)启动或监控applicationmaster
(4)资源的分配与调度
2)nodemanger(nm)
(1)管理单个节点上的资源
(2)处理来自resourcemanager的命令
(3)处理来自applicationmaster的命令
3)application
(1)负责数据的切分
(2)为应用程序申请资源并分配给内部任务
(3)任务的监控与容错
4)container
(1)container是yarn中的资源抽象,它是封装了某个节点上的多维度资源,如内存,cpu,磁盘,网络
4.mapreduce架构概述
1)mapreduce将计算过程分为两个阶段:map和reduce
(1)map阶段并行处理输入数据
(2)reduce阶段是对map结果进行汇总
## 6.大数据技术生态体系

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200218231502947.png?x-oss-process=image/watermark,type_zmfuz3pozw5nagvpdgk,shadow_10,text_ahr0chm6ly9ibg9nlmnzzg4ubmv0l3fxxzmzmdy0mzq3,size_16,color_ffffff,t_70)

1)sqoop:sqoop是一款开源的工具,主要用于在hadoop、hive与传统的数据库(mysql)间进行数据的传递,可以将一个关系型数据库
(例如 :mysql,oracle 等)中的数据导进到hadoop的hdfs中,也可以将hdfs的数据导进到关系型数据库中。
2)flume:flume是cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,flume支持在日志系统中
定制各类数据发送方,用于收集数据;同时,flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
3)kafka:kafka是一种高吞吐量的分布式发布订阅消息系统,有如下特性:
(1)通过o(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以tb的消息存储也能够保持长时间的稳定性能。
(2)高吞吐量:即使是非常普通的硬件kafka也可以支持每秒数百万的消息。
(3)支持通过kafka服务器和消费机集群来分区消息。
(4)支持hadoop并行数据加载。
4)storm:storm用于“连续计算”,对数据流做连续查询,在计算时就将结果以流的形式输出给用户。
5)spark:spark是当前最流行的开源大数据内存计算框架。可以基于hadoop上存储的大数据进行计算。
6)oozie:oozie是一个管理hdoop作业(job)的工作流程调度管理系统。
7)hbase:hbase是一个分布式的、面向列的开源数据库。hbase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库
8)hive:hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将
sql语句转换为mapreduce任务进行运行。 其优点是学习成本低,可以通过类sql语句快速实现简单的
mapreduce统计,不必开发专门的mapreduce应用,十分适合数据仓库的统计分析。
10)r语言:r是用于统计分析、绘图的语言和操作环境。r是属于gnu系统的一个自由、免费、源代码开放的软件,它是一个用于
统计计算和统计制图的优秀工具。
11)mahout:apache mahout是个可扩展的机器学习和数据挖掘库。
12)zookeeper:zookeeper是google的chubby一个开源的实现。它是一个针对大型分布式系统的可靠协调系统,
提供的功能包括:配置维护、名字服务、 分布式同步、组服务等。zookeeper的目标就是封装好复杂易出错的关键服务,
将简单易用的接口和性能高效、功能稳定的系统提供给用户

## 7.推荐系统项目架构

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200218231858193.png?x-oss-process=image/watermark,type_zmfuz3pozw5nagvpdgk,shadow_10,text_ahr0chm6ly9ibg9nlmnzzg4ubmv0l3fxxzmzmdy0mzq3,size_16,color_ffffff,t_70)














------------恢复内容结束------------

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网