Hadoop思想之源:Google

  面对的数据和计算难题

    ——大量的网页怎么存储

    ——搜索算法

  带给我们的关键技术和思想

    ——GFS

    ——Map-Reduce

    ——Bigtable

  

Hadoop创始人介绍:

  Hadoop作者Doug cutting,就职Yahoo期间开发了Hadoop项目,目前在CLoudera公司从事架构工作。他不但是Hadoop项目的发起人,还是Lucene、Nutch项目的发起人。

          

Hadoop简介:

  ——名字来源于Hadoop之父Doug Cutting儿子的玩具大象。

  2003-2004年,Google公开了部分GFS和Mapreduce思想的细节,以此为基础Doug Cutting等人用了2年业余时间实现了DFS和Mapreduce机制,一个微缩版:Nutch。

  Hadoop于2005年秋天作为Lucene的子项目Nutch的一部分正式引入Apache基金会。2006年3月份,Map-Reduce和Nutch Distributed File System(NDFS)分别被纳入成为Hadoop的项目中。

  ——分布式存储系统HDFS(Hadoop Distributed File System)

    • 分布式存储系统;
    • 提供了:高可靠性、高扩展性和高吞吐率的数据存储服务;

  ——分布式计算框架Map-Reduce

    • 分布式计算框架
    • 具有易于编程、高容错性和高扩展性等优点。

 

HDFS优点:

  - 高容错性:

    • 数据自动保存多个副本
    • 副本丢失后,自动恢复(最少保留三份)

  - 高可靠性

    • Hadoop按位存储和处理数据的能力值得人们信赖

  - 高扩展性

    • Hadoop是在可用的计算机集簇间分配数据并完成计算任务,这些集簇可以方便地扩展到数以千计的节点中

  - 高效性:

    • Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快

  - 适合批处理:

    • 移动计算而非数据移动
    • 数据位置暴露给计算框架

  - 适合大数据处理:

    • GB、TB、甚至PB级数据
    • 百万规模以上的文件数量
    • 10K+节点

  - 可构建在廉价机器上:

    • 通过多副本提高可靠性
    • 提供了容错和回复机制

HDFS缺点:

  - 不适合低延迟数据访问:

    • 比如毫秒级
    • 低延迟于高吞吐率

  - 不适合小文件存取:

    • 占用NameNode大量内存
    • 寻道时间超过读取时间

  - 不支持并发写入、文件随机修改:

    • 一个文件只能有一个写者,不支持多用户写入及任意修改文件
    • 仅支持append(数据追加)

HDFS数据存储元(block)

  - 文件被切分成固定大小的数据块

    • 默认数据块大小为64MB,可以配置
    • 若文件大小不到64MB,则单独存成一个bloce

  - 一个文件存储方式

    • 按大小被切分成若干个block,存储到不同节点上
    • 默认情况下每个block都有三个副本

  - Block大小和副本数通过Clien端上传文件时设置,文件上传成功后副本数可以变更,Block Size不可变更

HDFS设计思想:

NameNode(NN):
  - NameNode主要功能:接受客户端的读写服务

  - NameNode保存metadata信息,包括:

    • 整个文件系统的目录信息
    • 文件owership(所有者)和permissions(权限)
    • 文件包含哪些block
    • 文件包含的Block保存在哪个DataNode(由DataNode启动时上报)

  - NameNode的metadata信息在启动后会加载到内存:

    • metadata存储到磁盘文件名为“fsimage”
    • Block的位置信息不会保存到“fsimage”
    • edits记录对metadata的操作日志

    

SecondaryNameNode(SNN):

  - 它不是NameNode的备份(但可以做备份),它的主要工作是帮助NameNode合并edits log,减少NameNode启动时间

  - SecondaryNameNode执行合并时机:

    • 根据配置文件设置的时间间隔fs.checkpoint.period默认3600秒
    • 根据配置文件设置edits log大小fs.checkpoint.size规定edits文件的最大值,默认是64MB

SecondaryNameNode合并流程:

DataNode(DN):

  - 存储数据(block)

  - 启动DataNode线程的时候会向NameNode汇报block信息(block位置信息),保存到NameNode的metadata(fsimage文件)中

  - 通过向NameNode发送心跳保持与其联系(3秒一次),如果NameNode10分钟没有收到DataNode的心跳,则认为其已经lost,并copy其上的block到其他DataNode,以保证每个文件的每个Block至少保存有3个副本

Block的副本放置策略:

HDFS写流程

HDFS读流程

HDFS文件权限:

  - 与Linux文件权限类似

    • r:read;w:write;x:execute,权限x对于文件忽略,对于文件夹表示是否允许访问其内容

  - 如果Linux系统用户zhangsan使用hadoop命令创建一个文件,那么这个文件在HDFS中owner就是张三

  - HDFS的权限目的:阻止好人做错事,而不是阻止坏人做坏事。HDFS相信,你告诉我你是谁,我就认为你是谁

安全模式:

  - namenode启动的时候,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作

  - 一旦在内存中成功建立文件系统元数据的映射,则创建一个新的fsimage文件(这个操作不需要SecondaryNameNode)和一个空的编辑日志

  - 此刻namenode运行在安全模式,即namenode的文件系统对于客户端来说是只读的(显示目录,显示文件内容等。写、删除、重命名都会失败)。

  - 在此阶段Namenode手机各个datanode的报告,当数据块达到最小副本数以上时,会被认为是“安全”的,在一定比例(可以设置)的数据块被确定为“安全”后,再过若干时间,安全模式结束

  - 当检测到副本数不足的数据块时,该块会被复制直到达到最小副本数,系统中数据块的位置并不是由namenode维护的,而是以块列表形式存储在datanode中。

HDFS安装:

  完全分布式安装

    • 下载
    • 解压
    • 检查java和ssh的免密码登录
    • 修改core-site.xml
    • 修改hdfs-site.xml
    • 修改masters文件和slaves文件
    • 格式化namenode
    • start-hdfs.sh启动

hadoop学习日志的更多相关文章

  1. Hadoop学习日志- install hadoop

    资料来源 : http://www.tutorialspoint.com/hadoop/hadoop_enviornment_setup.htm Hadoop 安装 创建新用户 $ su passwo ...

  2. Hadoop学习笔记—5.自定义类型处理手机上网日志

    转载自http://www.cnblogs.com/edisonchou/p/4288737.html Hadoop学习笔记—5.自定义类型处理手机上网日志 一.测试数据:手机上网日志 1.1 关于这 ...

  3. Hadoop学习之旅三:MapReduce

    MapReduce编程模型 在Google的一篇重要的论文MapReduce: Simplified Data Processing on Large Clusters中提到,Google公司有大量的 ...

  4. [Hadoop] Hadoop学习历程 [持续更新中…]

    1. Hadoop FS Shell Hadoop之所以可以实现分布式计算,主要的原因之一是因为其背后的分布式文件系统(HDFS).所以,对于Hadoop的文件操作需要有一套全新的shell指令来完成 ...

  5. Hadoop学习路线图

    Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项目包括, ...

  6. Hadoop学习总结之五:Hadoop的运行痕迹

    Hadoop学习总结之五:Hadoop的运行痕迹   Hadoop 学习总结之一:HDFS简介 Hadoop学习总结之二:HDFS读写过程解析 Hadoop学习总结之三:Map-Reduce入门 Ha ...

  7. 大数据Hadoop学习之搭建hadoop平台(2.2)

    关于大数据,一看就懂,一懂就懵. 一.概述 本文介绍如何搭建hadoop分布式集群环境,前面文章已经介绍了如何搭建hadoop单机环境和伪分布式环境,如需要,请参看:大数据Hadoop学习之搭建had ...

  8. Hadoop学习------Hadoop安装方式之(二):伪分布部署

    要想发挥Hadoop分布式.并行处理的优势,还须以分布式模式来部署运行Hadoop.单机模式是指Hadoop在单个节点上以单个进程的方式运行,伪分布模式是指在单个节点上运行NameNode.DataN ...

  9. Hadoop网站日志数据清洗——正则表达式实现

    周旭龙前辈的Hadoop学习笔记—网站日志分析项目案例简明.经典,业已成为高校大数据相关专业的实验项目.上周博主也完成了这个实验,不同于周前辈使用特殊符号切割字符串得到数据的做法,博主使用了正则表达式 ...

随机推荐

  1. java 求第n小的质数

    package a小米; import java.util.Scanner; public class prime { public static boolean isPrime(int n){ fo ...

  2. Spring Controller 获取请求参数的几种方法

    1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交.若"Content-Type"="application/ ...

  3. POJ C程序设计进阶 编程题#3: 发票统计

    来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 有一个小型的报账系统,它有如 ...

  4. windwos异地备份Mysql数据库

    @echo off@title Mysqlbackup echo MySQL数据库备份 echo ***********************echo Today %date%echo Time % ...

  5. Dockpanel的控件加载问题

    1. 正确加载模式:panel.ControlContainer.Controls.Add(control); 如果用panel.Controls.Add(control);则可能出现模块发生位移问题 ...

  6. 为什么使用 Redis及其产品定位 (转载自http://www.infoq.com/cn/articles/tq-why-choose-redis)

    传统MySQL+Memcached架构遇到的问题 实际MySQL 是适合进行海量存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不 ...

  7. js数组的内部实现,迭代器,生成器和内包

    js内部实现 在js以外的很多语言中,数组将会隐式占用一段连续的内存空间.这种隐式的内部实现,使得高效的内存使用及高速的元素方法称为可能,而 在javascript中,数组实体是一个对象,所以通常的实 ...

  8. php static延迟静态绑定

    如果你是一个懒惰的程序员,你看到以下代码可能会恼火 abstract class U{ } class u1 extends U{ public static function create(){ r ...

  9. Java排序

    给出10个数,使用某种排序方法,按照从小到大的顺序输出个个数. 根据要求,首先得给出这10个数,这里的算法需要一个循环,数据结构需要一个长度为10的整型数组.首先用BufferedReader in= ...

  10. 03-树2 List Leaves

    二叉树及其遍历 一遍AC,挺开心的hhh~ 简单讲下思路:叶子,顾名思义就是没有左右子树的结点.由于题目要求,叶子结点的输出顺序是从上往下,从左往右.所以用层序遍历法. 当然,这里先找到root树的根 ...