Hadoop快速实战(一)——基本概念
2017-02-08 10:18
246 查看
一、什么是Hadoop
The Apache hadoop project develops open-source software for reliable,scalable,distributed computing 所以hadoop首先是个项目,这个项目专门开发软件,开发可靠地,可扩展的,用于分布式计算的软件。
解决问题:
海量数据的存储(HDFS)
海量数据的分析(MapReduce)
资源管理调度(YARN)
作者:Doug Cutting
Google的三篇论文 —GFS —MapReduce —BigTableDoug 受谷歌的启发,Cutting通过java对其分别实现,就是早期版本的hadoop。
如今的hadoop生态非常的丰富
“去IOE化”
什么是“IOE”。IBM:服务器供应商
Oracle:数据库生产商
EMC:存储阵列服务
这三家公司代表了所在行业的最高水平,随着互联网的快速发展,用户量的不断扩增,很容易就会达到软硬件的瓶颈,而这三家公司的服务收费非常的贵。
于是有了这样的一种思考:如果我要盖一栋大楼,为什么要请世界上最好的大力士,而不是请100个农民工呢?
于是hadoop可以将多台廉价机器协作起来堪比一台小型机,而廉价机器实际上要比小型机真的便宜太多了。
大数据&云计算
云计算被炒的很热,目前落地的云计算技术就是虚拟化,说白了就BAT现在对外租售服务器的业务。而他和大数据恰恰相反,大数据是聚合服务器处理海量问题,而虚拟化则是把服务器分割后独立使用。
二、Hadoop组件和文件系统概念
版本
Apache官方版本(2.4.1) 2.6
Cloudera
使用下载最多的版本,稳定,有商业支持,在Apache的基础上打上了一些patch。推荐使用。
HDP(Hortonworks Data Platform)
Hortonworks公司发行版本。
hadoop核心(狭义)
HDFS:Hadoop Distributed File System 分布式文件系统YARN:Yet Another Resource Negotiator 资源管理调度系统
MapReduce:分布式运算框架
注意:YARN中的资源,指的是硬件资源,例如:cpu、内存、磁盘IO等,YARN就是调用这些资源为上层的运算服务。简单说:我们根据MapReduce提供的API写一些程序,这些程序是分布式计算的,那么它会分配到不同的机器上跑,那么怎么分配,就是YARN说了算。跑起来的程序是分析数据用的,数据来自于HDFS
HDFS
什么是文件系统?将底层的磁盘扇区封装起来,对外提供统一的文件存储管理接口。windows中的NTFS是本地文件管理系统,简单说就是,我的电脑只能管理我本地磁盘的文件内容,不能管理到其他磁盘的文件。而HDFS是分布式文件系统,也就是说对外提供的接口感觉应该是一个磁盘,实际上磁盘上的内容是分布式存储在不同服务器上的。
为什么要用HDFS
如果经常使用局域网络的人知道,其实windows系统本身就有类似于分布式文件系统的管理方式,就是共享。共享的方式就非常类似于我们所阐述的分布式文件系统,我们可以用多台机器作为不同的文件存储目录。
但是这种方式问题重重
1. 某一特定文件的存储过于集中,导致并发性能差。比如我在software中放了一部电影,那么同时有10个人都来下载这部电影,那么其他三台服务就闲置了,而software所在服务器则压力很大。
2. 风险大,比如software所在服务器坏了,那么software服务就整个挂掉。
3. 不同服务器之间文件如果要交换,非常麻烦。
所以我们需要一套全新的分布式文件系统
HDFS原理
namenode节点:
集群中的磁盘分为两种角色,其中一个就是namenode,他是用来存储不同的存储内容的路径。因为每部分内容不止存储一次,所以需要单独记录
datanode节点:
用来存储文件的block。一个大文件,HDFS会对其拆分成多个block,然后分别多次存储。
实现机制:
1、文件是被切块存储在多台服务器上,存储在各台服务器的本地文件系统中
2、客户端不需要关心分布式存储细节,hdfs提供了一个抽象统一的目录树
3、每一个文件块保存多个副本
4、hdfs中的文件和具体实际存储位置之间的对应关系交由专门的服务器管理——namenode
优点:
1、容量可以线性扩展
2、副本机制:存储可靠性高,吞吐量增大
3、通过namenode节点,客户端访问文件就只需要指定hdfs路径,而不需要知道文件真实存储是怎样的
MapReduce
移动数据:指把数据移动到某个指定的服务器上进行运算 移动运算:指把运算方式移动到某个有数据的服务器上进行运算
基本思想:
1、将一个业务处理需求分成两个阶段来进行,map阶段,reduce阶段
2、将分布式计算中面临的公共的问题封装成框架来实现(jar包的分发,任务的启动,任务的容错,调度,中间结果的分组传递。。。)
3、应用开发人员只需要关心业务逻辑
mapreduce只是分布式运算框架的一种实现,类似的框架还有很多,比如storm(流式计算)、spark(内存迭代计算)。前者通常用于离线运算,后者常用于实时运算
离线运算:数据已经确定了,剩下的就是运算了 实时运算:数据在不断变化不断增加,运算也要与之相对应。
相关文章推荐
- hadoop实战(一) hadoop基本概念
- 表驱动法概念到实战(一) 原理及基本运用
- 表驱动法概念到实战(一) 原理及基本运用
- 用 Hadoop 进行分布式并行编程(一)基本概念与安装部署
- Hadoop 基本概念
- 快速入门系列零:玛德界面库的来由、窗口、皮肤、项目管理等基本概念
- SubVersion基本概念与快速流程,做大项目必备
- Hadoop基础入门学习笔记(基本概念)
- 走进AngularJs(一)angular基本概念的认识与实战
- Hadoop学习(1)-基本概念
- 深入学习Hadoop 1- HDFS的基本概念
- Hadoop基本概念
- 深入学习Hadoop-HDFS的基本概念
- Hadoop学习笔记-大数据开发 入门 初学者 基本概念
- 表驱动法概念到实战(一) 原理及基本运用
- Eclipse 工作台基本概念>快速视图
- LoadRunner性能测试实战 - 1.1 性能测试基本概念
- [Hadoop]基本概念及安装
- Hadoop深入浅出之HDFS分析 第一讲:基本概念
- docker 笔记(基本概念、快速运行、自定义镜像)