Hadoop初级之Hadoop基本概念与应用前景

Hadoop

大数据概念

大数据(big data):指无法在一定时间范围内用常规软件工具(例如java ee 中的mysql)进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

主要解决,海量数据的存储和海量数据的分析计算问题。

1T容量的电脑 想要存储几百T的资料 就搭建个集群 一个节点存放一点就可以

从这几百T的资料中 查找出你想要的资料 就属于数据的分析计算

如果hr问对大数据的理解 就可以从数据的存储于数据的计算两个方面进行描述

按顺序给出数据存储单位:bit、Byte、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB。

1Byte = 8bit  1K = 1024Byte  1MB = 1024K

1G = 1024M  1T = 1024G       1P = 1024T  (进制都是1024)

TB、PB、Eb目前是数据的主流

大数据特点

Volume(大量)

Velocity(高速)

Variety(多样)

这种类型的多样性也让数据被分为结构化数据和非结构化数据。相对于以往便于存储的以数据库/文本为主的结构化数据,非结构化数据越来越多,包括网络日志、音频、视频、图片、地理位置信息等,这些多类型的数据对数据的处理能力提出了更高要求。

像这种订单文本 就是结构化数据 像图片啥的 就是非结构化

低价值密度 数据量越大 对自己有用的信息越少  难以筛选

大数据应用前景

工厂选址要大数据分析 仓库存储什么商品也要分析

大数据提前预测人数

电商商品推荐功能

4、保险:海量数据挖掘及风险预测,助力保险行业精准营销,提升精细化定价能力。

5、金融:多维度体现用户特征,帮助金融机构推荐优质客户,防范欺诈风险。

支付宝大数据分析 对你的余额 人脉关系 征信分析

6、房产:大数据全面助力房地产行业,打造精准投策与营销,选出更合适的地,建造更合适的楼,卖给更合适的人。

大数据部门业务流程分析

主要是做中间的

大数据部门组织架构

平台组 各种平台搭建  监控集群平台能否稳定运行性能调优  注重技术   底层源码

仓库组 清洗脏无用的数据  需求量比较大 比较重视业务

算法比较难

推荐系统有可能

Hadoop生态圈

我们在工作中说的hadoop 不仅仅是只hadoop框架 是hadoop里面的整体的环境都叫hadoop

Hadoop发展史

后面才有yarn添加进来 这三篇论文有时间可以看一看  创始人是doung cutting

集中式系统

集中式系统用一句话概括就是:一个主机带多个终端。终端没有数据处理能力,仅负责数据的录入和输出。而运算、存储等全部在主机上进行。现在的银行系统,大部分都是这种集中式的系统,此外,在大型企业、科研单位、军队、政府等也有分布。集中式系统,主要流行于上个世纪。集中式系统的最大的特点就是部署结构非常简单,底层一般采用从IBM、HP等厂商购买到的昂贵的大型主机。因此无需考虑如何对服务进行多节点的部署,也就不用考虑各节点之间的分布式协作问题。但是,由于采用单机部署。很可能带来系统大而复杂、难于维护、发生单点故障(单个点发生故障的时候会波及到整个系统或者网络,从而导致整个系统或者网络的瘫痪)、扩展性差等问题。

Hadoop 概念

Hadoop 是一个由 Apache 基金会所开发的分布式系统(多台服务器构建集群)基础架构(是很基础的架构,以后的hive等都是基于hadoop框架)

主要解决,海量数据的存储和海量数据的分析计算问题。

广义上来说,HADOOP 通常是指一个更广泛的概念——HADOOP 生态圈

Hadoop  三大发行版本: Apache、Cloudera、Hortonworks。

Apache 版本最原始(最基础)的版本,对于入门学习最好。所有的东西都是自己配的

Cloudera 在大型互联网企业中用的较多。 也叫CDH版本 面试官也有可能问cdh版本的 所有的框架版本都是一一对应的  比较方便 比如hadoop什么版本对应什么版本的hive

Hortonworks 文档较好。

解释1 多个副本 同一数据保存在不同的地方

2可以增加服务器和减少服务器 

3并行处理数据

4假设一个节点挂掉了 会重新分配这个任务给其他节点

hadoop干啥的:
1.存储大量数据。  怎么存储的···  hdfs  只需要启动hdfs服务就好
start-dfs.sh
2.并行计算大量数据。      mr
 
start-dfs.sh
为什么上边这个命令在任何路径都可以用呢?
因为配置了环境变量

Hadoop 安装注释

1.下载hadoop.tar包到linux系统。
2.解压  tar -zxvf  —C
3.进入hadoop路径配置信息。 cd /opt/hadoop-2.7.2/etc/hadoop
4.hadoop-env.sh   配置jdk路径。   因为hadoop就是用java写的
5.core-site.xml   配置ip和端口号 
6.hdfs-site.xml   配置的是副本数
7.mapred-site.xml  指定框架名称: yarn
8.yarn-site.xml   配置resourcemanager相关信息
9.slaves         配置你存活的机器
10.免密
11.格式化namenode,需要在有namenode的节点来格式
12.启动服务来使用

Hadoop 1.X与hadoop 2.X区别

大数据生态学习体系

数据来源层

1结构化数据 例如mysql里面存储的订单数据

2浏览日志一类的 是半结构化 可以转化成结构化数据存储到数据库里

数据传输层

Sqoop:主要用于在 Hadoop(Hive)与传统的数据库(mysql)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle 等)中的数据导进到Hadoop 的 HDFS 中,也可以将 HDFS 的数据导进到关系型数据库中。(导数据)

Flume: 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚

合和传输的系统,Flume 支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume

提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力(收集日志)

Kafka:是一种高吞吐量的分布式发布订阅消息系统,有如下特性:

(1)通过 O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以 TB 的消息

存储也能够保持长时间的稳定性能。

(2)高吞吐量:即使是非常普通的硬件 Kafka 也可以支持每秒数百万的消息

(3)支持通过 Kafka 服务器和消费机集群来分区消息。

(4)支持 Hadoop 并行数据加载。(消息队列)

数据储存层

Hdf存储

kafka也可以存1g

Hbase:是一个分布式的、面向列的开源数据库。HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。

资源管理层

推荐系统框架图

 

 
   

 


我们在网上搜索一个东西 被tomcat收集日志  然后放到文件日志里作为数据来源 放到传输层flume里面 放到 储存层 通过资源调度获取资源 实时搜索实时推荐  通过任务调度层调度 放在 数据库或者文件里  再将同类的业务推荐  再返回

Yarn

数据分析层

Spark streaming实际上不是真实的事实  有点延迟

Storm是真实的实时处理

任务调度器

在这么一个大的集群中  启动的任务几百个  哪个先启动 启动到几点  并行串行  这个任务执行的这的时候另个任务执行到哪 都需要资源调度oozie讲的比较多 

将易变化的数据放入zk中 统一配置服务

hadoop目录结构

进入bin里面

管理hadoop yarn hdfs等

进入etc里面

存放配置

Sbin

存放的是启动或者关闭hadoop的服务

HDFS

HDFS,它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。

HDFS的设计适合一次写入,多次读出的场景,且不支持文件的修改。适合用来做数据分析,并不适合用来做网盘应用。

随着数据量越来越大,在一个操作系统管辖的范围内存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS只是分布式文件管理系统中的一种。

HDFS优缺点

 优点

高容错性

数据自动保存副多个本。它通过增加副本的形式,提高容错性。

某一个副本丢失以后,它可以自动恢复。

适合大数据处理

数据规模:能够处理数据规模达到 GB、TB、甚至PB级别的数据。

文件规模:能够处理百万规模以上的文件数量,数量相当之大。

流式数据访问

一次写入,多次读取,不能修改,只能追加。

它能保证数据的一致性。

可构建在廉价机器上,通过多副本机制,提高可靠性。

 缺点

不适合低延时数据访问,比如毫秒级的存储数据,是做不到的。

无法高效的对大量小文件进行存储

存储大量小文件的话,它会占用 NameNode大量的内存来存储文件、目录和块信息。这样是不可取的,因为NameNode的内存总是有限的。

小文件存储的寻道时间会超过读取时间,它违反了HDFS的设计目标。假设很多小文件 找这些小文件会浪费大量的时间

多个小文件这么处理

在数据处理系统的最前端(预处理/采集),将小文件先合并成大文件,再上传到HDFS做后续分析。

并发写入、文件随机修改

一个文件只能有一个写,不允许多个线程同时写。不允许多个文件同时上传到hdfs上

仅支持数据 append(追加),不支持文件的随机修改。

HDFS架构

Client:就是客户端。

(1)文件切分。文件上传 HDFS 的时候,Client 将文件切分成一个一个的Block,然后进行存储。

(2)与NameNode交互,获取文件的位置信息。

(3)与DataNode交互,读取或者写入数据。

(4)Client提供一些命令来管理HDFS,比如启动或者关闭HDFS。

(5)Client可以通过一些命令来访问HDFS。

2)NameNode:就是master,它是一个主管、管理者。

(1)管理HDFS的名称空间。管理元数据
(2)管理数据块(Block)映射信息(不是真实数据),知道文件在datanode的路径

(3)配置副本策略

(4)处理客户端读写请求。

namenode就相当于这本书的目录

3) DataNode:就是Slave。NameNode下达命令,DataNode执行实际的操作。

(1)存储实际的数据块。(真实数据)

(2)执行数据块的读/写操作。

Datanode才储存真实数据

4) Secondary NameNode:并非NameNode的热备。冷备。当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务。

(1)辅助NameNode,分担其工作量。

(2)定期合并Fsimage和Edits,并推送给NameNode。

(3)在紧急情况下,可辅助恢复NameNode。

用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。

 元数据:分两块:
1.edits 文件     里面记录的是 操作信息。  比如:put操作。
2.fsimage 镜像文件  文本或者文件夹的存放状态。 比如:文件名,文件的创建或者上传者。权限信息,创建时间。。等文件的属性
由于镜像文件和edits文件都会加载到内存当中,所以,在公司(生产环境) namenode这台服务器的内存 都会很大。
SecondaryNameNode目录结构和namenode目录结构是很像的,而且在一点时间内,nn里的元数据和sn里元数据是差别不大的。
 
               

分布式系统(distributed system)

一群独立计算机集合共同对外提供服务,但是对于系统的用户来说,就像是一台计算机在提供服务一样。分布式意味着可以采用更多的普通计算机(相对于昂贵的大型机)组成分布式集群对外提供服务。计算机越多,CPU、内存、存储资源等也就越多,能够处理的并发访问量也就越大。

一个标准的分布式系统应该具有以下几个主要特征:

分布性

分布式系统中的多台计算机之间在空间位置上可以随意分布,系统中的多台计算机之间没有主、从之分,即没有控制整个系统的主机,也没有受控的从机。

透明性

系统资源被所有计算机共享。每台计算机的用户不仅可以使用本机的资源,还可以使用本分布式系统中其他计算机的资源(包括CPU、文件、打印机等)。

猜你喜欢

转载自www.cnblogs.com/zxn0628/p/11211147.html