Hadoop的前世今生

Google大数据技术:

1.MapReduce:概念"Map(映射)"和"Reduce(归约)",它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

2.BigTable:是Google设计的分布式数据存储系统,用来处理海量的数据的一种非关系型的数据库

3.GFS:是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体性能较高的服务。

hadoop革命性变化:

1.成本降低,能用PC机,不用大型机和高端存储

2.软件容错硬件故障视为常态,通过软件保证可靠性

3.简化并行分布式计算,无须控制节点同步和数据交换

Hadoop是一个模仿Google大数据技术的开源实现。是一个开源的分布式存储和分布式计算框架。

Hadoop的功能与优势

Hadoop是一个开源 + 分布式存储(HDFS)分布式计算平台(MapReduce)

Hadoop包括两个核心组成:

HDFS :分布式文件系统,存储海量的数据,64MB的基础块组成的存储(数据量大时也可以128MB乃至更大)

MapReduce:并行计算框架,实现任务分解和调度

Hadoop 可以用来搭建大型数据仓库,PB级数据的存储、处理、分析统计等业务

Hadoop的优势:高扩展、低成本、成熟的生态圈。

Hadoop的生态系统及版本

Hive:sql语句 ==> Hadoop任务,将sql转化为hadoop能执行的任务,降低了使用Hadoop的门槛

HBASE:存储结构化数据的分布式数据库,提供数据的随机读写和实时访问,实现对表数据的读写功能

zookeeper:监控Hadoop集群里的每个节点的状态,管理整个集群的配置,维护数据节点之间的一致性

Hadoop的版本:1.x和2.0版本

Hadoop的安装

Step1 :准备Linux环境

租用云主机,阿里云,UnitedStack等

Step2 :安装JDK

我使用的是阿里云,安装jdk方法参考http://blog.csdn.net/ch717828/article/details/48395245

Step3 :配置Hadoop

参考 http://blog.csdn.net/ch717828/article/details/48440173

HDFS中的基本概念

块(Block):HDFS的文件被分成块进行存储,HDFS块的默认大小是64MB(一般设置成128M),块是文件存储处理的逻辑单元

NameNode:NameNode是管理节点,存放文件元数据(HDFS由一个NameNode多个DataNode组成)

(1)文件与数据块的映射表

(2)数据块与数据节点的映射表

DataNode:DataNode是HDFS的工作节点,存放数据块

HDFS体系结构

HDFS的数据管理与容错

(1)每个数据块3个副本,分布在两个机架内的三个节点

(2)DataNode定期向NameNode发送心跳消息

(3)二级NameNode定期同步元数据映像文件和修改日志。NameNode发生故障时,备胎转正

NameNode发生异常,怎么容错?(Hadoop 2.x的HA,有两个NameNode节点,一台处于Active状态,为主节点,一台处于StandBy状态,为备用节点,两者数据保持一致,主节点发生异常,主动切换到备节点,这样就避免NameNode的单点问题)

HDFS读取文件的流程

1. 客户端向NameNode发起读数据请求;

2. NameNode找出距离最近的DataNode节点信息;

3. 客户端从DataNode分块下载文件;

1.客户端向NameNode发起写数据请求

2.分块写入DataNode节点,DataNode自动完成副本备份

3.DataNode向NameNode汇报储存完成NameNode通知客户端

HDFS 特点

(1)数据冗余,硬件容错

(2)流式的数据访问

(3)适合存储大文件

(4)适合数据批量读写,吞吐量高

(5)适合一次写入多次读取,顺序读写。不支持多用户并发写相同文件

HDFS 优缺点

HDFS优点:

(1)适合大文件存储,支持TB、PB级别的数据存储,并有副本策略;

(2)可以构建在廉价的机器上,并有一定的容错和恢复机制;

(3)支持流式数据访问,一次写入,多次读取最高效;

HDFS缺点:

(1)不支持大量小文件的存储;

(2)不适合并发写入,不支持文件随机修改;

(3)不支持随机读等低延时的访问方式;

HDFS命令操作演示

[plain] view plain copy
  1. hadoop fs -ls /

类Linux系统:ls , cat , mkdir , rm , chmod , chown等

HDFS文件交互:copyFromLocal(从本地系统拷贝到hdfs系统), copyToLocal(从hdfs系统拷贝到本地系统) , get , put

查看hdfs根目录: hdfs dfs -ls /

帮助文档:hdfs dfs -help

mk.txt 上传到本地目录下改名为 mk2.txt(copyToLocal):hdfs dfs -copyToLocal /test/mk.txt /home/mk2.txt

mk.txt 上传到 test 下 (copyFromLocal):hdfs dfs -copyFromLocal /hmoe/mk.txt /test/

MapReduce原理

MapReduce是一种编程模型,是一种编程方法,是抽象的理论;

思想:分而治之,一个大任务分成多个小的子任务(map),并行执行后,合并结果(reduce)。

YARN(Haoop2之后的资源管理器)概念

1.ResourceManager:分配和调度资源;启动并监控ApplicationMaster; 监控NodeManager。

2.ApplicatonMaster:为MR类型的程序申请资源,并分配给内部任务;负责数据的切分;监控任务的执行及容错;

3.NodeManager:管理单个节点的资源;处理来自ResourceManager的命令;处理来自ApplicationMaster的命令。

MapReduce编程模型

输入一个大文件,通过Split之后,将其分为多个分片;

每个文件分片由单独的机器去处理,这就是Map方法  ;

将各个机器计算的结果进行汇总并得到最终的结果,这就是Reduce方法;

MapReduce运行流程

Job & Task:一个Job可以分成多个map task和 reduce task

JobTracker:作业调度、分配任务、监控任务执行进度、监控TaskTracker的状态

TaskTracker:执行任务、汇报任务状态

MapReduce应用案例--WordCount单词计数

代码:….

在云服务器上,执行代码

编译

javac -classpath /usr/hadoop/hadoop-1.2.1/hadoop-core-1.2.1.jar:/usr/hadoop/hadoop-1.2.1/commmons-cli-1.2.jar -d word_count_class/ WordCount.java

打包

cd word_count_class

jar -cvf wordcount.jar *.class

创建输入和输出文件

cd ..

mkdir input

vim file1

内容为

hello world

hello hadoop

hadoop file system

hadoop java api

hello java

vim file2

内容为

new file

hadoop file

hadoop new world

hadoop free home

hadoop free school

将file1 和 file2提交至 hdfs中去

cd ..

hadoop fs -mkdir input_wordcount //hdfs中创建文件夹

hadoop fs -put input/* input_wordcount/   //将file1 和 file2提交至 hdfs中去

可以通过 hadoop fs -ls 命令查看 input_wordcount文件夹的位置

提交

hadoop jar word_count_class/wordcount.jar WordCount input_wordcount output_wordcount

查看结果

hadoop fs -ls output_wordcount  //查看结果文件所在位置

hadoop fs -cat output_wordcount/part-r-00000 //打开文件

Hadoop大数据平台架构与实践相关推荐

  1. 初识大数据--Hadoop大数据平台架构与实践

    Hadoop大数据平台架构与实践 推荐书籍: ⭐大数据存储与处理技术的原理(理论) ⭐Hadoop的使用和开发能力(实践) 预备知识: Linux常用命令 Java基础编程 1.大数据相关概念 ​ 无 ...

  2. Hadoop 大数据平台架构与实践

    初识Hadoop Hadoop是一个开源的分布式存储+分布式计算平台. Hadoop核心组成部分: HDFS:分布式文件系统,存储海量的数据. MapReduce:并行处理框架,实现任务分解和调度. ...

  3. hadoop大数据平台架构之DKhadoop详解

    hadoop大数据平台架构之DKhadoop详解 大数据的时代已经来了,信息的爆炸式增长使得越来越多的行业面临这大量数据需要存储和分析的挑战.Hadoop作为一个开源的分布式并行处理平台,以其高拓展. ...

  4. Hadoop大数据平台开发与案例分析

    关于举办"Hadoop大数据平台开发与案例分析 "高级工程师 一.课程介绍 1. 需求理解 Hadoop 设计之初的目标就定位于高可靠性.高可拓展性.高容错性和高效性,正是这些设计 ...

  5. 硅谷企业的大数据平台架构什么样?看看Twitter、Airbnb、Uber的实践

    导读:本文分析一下典型硅谷互联网企业的大数据平台架构. 作者:彭锋 宋文欣 孙浩峰 来源:大数据DT(ID:hzdashuju) 01 Twitter的大数据平台架构 Twitter是最早一批推进数字 ...

  6. 大数据平台架构实战(一)hadoop搭建

    目标:美团的大数据平台架构实践 - 知乎 注:该图片来自上面链接 步骤 首先第一步就是HDFS的搭建,也就是hadoop的搭建,下面具体介绍一下步骤和问题. 参考文档:Apache Hadoop 2. ...

  7. 《程序员》11月精彩内容:大数据平台架构与技术实践

    本期<程序员>呈现大数据平台架构与技术实践精彩内容,汇聚来自去哪儿.游族网络.链家网.万达金融等公司的技术专家,将带领读者共同探讨热门技术应用和实践优化,深入解析蕴藏的数据价值,展现时下大 ...

  8. 开源大数据平台的安全实践

    开源大数据平台的安全实践 刘杰 百度(中国)有限公司,北京 100085 摘要:开源大数据平台的安全机制目前并不特别完善,特别是用户认证.日志审计等方案还存在不少问题.分析了开源大数据平台存在的安全隐 ...

  9. 多图技术贴:深入浅出解析大数据平台架构

    目录: 什么是大数据 Hadoop介绍-HDFS.MR.Hbase 大数据平台应用举例-腾讯 公司的大数据平台架构 "就像望远镜让我们能够感受宇宙,显微镜让我们能够观测微生物一样,大数据正在 ...

最新文章

  1. nvm:Mac下的 node 版本管理工具
  2. 复旦的新衣再登Nature!穿在身上能为手机充电,可水洗可弯折,刀戳车撵都不坏...
  3. G面经prepare: Pattern Match
  4. 使用栈结构实现中缀转后缀算法(python)
  5. 性能优化:实现动画效果优先考虑css的transition
  6. SAP UI5不支持delta render
  7. 我心中的ASP.NET Core 新核心对象WebHost(二)
  8. python json dict对象使用_Python中:dict(或对象)与json之间的互相转化
  9. a76比a73强多少_arm的a73和a72同上10nm,谁强?
  10. mysql数据库栏目_MySQL的一些小技巧(持续更新) - mysql数据库栏目
  11. 节约内存编程方式操作系统(全概念)
  12. GIT的初步使用记录
  13. 决战EXCEL2010
  14. BZOJ 3166 set+可持久化trie树(OR 莫队)
  15. 路由选择使用指南之二Padavan
  16. eleme接口测试01(C#)
  17. 电脑设置一键锁屏方法
  18. 【ansys常见命令集合】
  19. 马尔科夫随机场Markov Random Field
  20. 软考各级别各科目考试分析

热门文章

  1. 论文笔记:DS-SLAM
  2. Social Recommendation with Missing Not at Random Data(ICDM 2018)参考文献
  3. 苹果公司对蓝牙免提AT指令的扩充
  4. 在线程中进行读取并写入文件和wenjia
  5. 2022上海市安全员C证操作证考试题库及在线模拟考试
  6. 关于浪潮服务器NF5280M5的介绍
  7. [机器学习]Python中Numpy,Pandas,Matplotlib,Scipy,Seaborn介绍
  8. PDF文件页面可以怎么提取 PDF页面提取方法
  9. Java通过DBCP连接池方法实现JDBC代码案例
  10. Java校验文件是否损坏