起源:Hadoop是google 的集群系统的开源实现
           --Google集群系统,:GFS(Google file system),MapReduce,BigTable(严格意义上讲,这个不是hadoop的东西)
            --Hadoop 主要由 HDFS(Hadoop Distributed file system ---hadoop文件分布式系统)MapReduce和HBase组成 
两大核心:
            MapReduce : 组成  Map进行任务的分解,Reduce进行结果的汇总
            HDFS :组成  NameNode    ,DataNode    ,Client    
 
HTFS讲解:
            通常的,我们习惯使用的就是关系型数据库,比如mysql    , sql server , oracle等等,但是这些数据库都是有局限性的,
数据量过大时候,也需要更换,总不能一直更换吧?所以,这就延伸出了,hadoop(当然,这个东西的起源也就是因为这个,当时是用作
数据采集的,但是发现数据量过大,以至于无法处理,所以 hadoop这东西就出来了,也是被 挤出来的一个东西)
            大数据:所谓的大数据,简单的可以这么理解为,数据集的大小超过了数据库软件和现有工具的处理 的范围了,所以,很多人整天喊着
大数据大数据,到底多大的数据才是大数据?(这里有点儿讽刺的意味),每次一说出来总被吓一跳,让人觉得很厉害的样子。
                Hadoop大数据 与 传统关系型数据库的 对比: 
                对比一
 
关系型数据(库)
 大数据:
 数据量方面:
GB  TB及其以下级别数据量
基本是TB  PB级别的数据
数据增长方面:
 数据增长不快   
持续、实时不定量增长数据
 结构:
主要是关系型,有具体的数据结构
非结构化,半结构化,多维数据
存在的实际价值:
 统计和报表 
数据挖掘和数据分析
                对比二:硬件(环境方面)
                    比较直观的理解就是,关系型数据库往往就单台服务器,所以不论从扩展性或者是 性能方面 都多少存在问题,可能有人说,微软有数据库错误集群
功能啊,这个是不假,但是那不是真正意义上的集群方式。扩展性更不用说了,就一个服务器,而且数据库只能指定具体的数据类型才可以
 
     Hadoop项目(子集):
            Core:    core是一套分布式文件系统,同时支持Map_Reduce的计算框架
            Avro:    定义了支持大数据应用的数据格式,虽然是JAVA编写的,但是提供了对多种语言的支持
            HDFS:Hadoop分布式文件系统
            Map/Reduce :    是一种使用比较简易的框架,可在多个机器集群上,以一种可靠的容错方式处理 TB级别的数据集
            ZooKeeper:    高可用的 可靠的分布式协同系统

PIG: (目前使用的越来越少)

Hive:   为提供简单的数据操作设计的 新的 分布式数据仓库。它提供了HiveSQL语言,类似于sql语句一样进行数据查询

HBase: 建立在Hadoop Core之上的提供一个可扩展的 数据系统

Flume: 一个分布式、可靠、高可用的海量日志集合的系统,支持在系统中定制各类数据发送方,用于数据收集

Mahout: 是一种具有可扩充能力的机器学习类

Sqoop: 是Apache 下用于RDBMS 和HDFS互相导数据的工具

(以上只有绿色部分的内容才是 hadoop的本身的内容,其他的东西做扩展使用)

Hadoop获取

           http://hadoop.apache.org

当然,可以看到很多版本的 hadoop的文件,这里先使用  1.2.X 的版本,先从基础开始嘛,然后后面再使用  2.X 的版本

1.2.X的版本获取链接 https://archive.apache.org/dist/hadoop/common/hadoop-1.2.1/ 选择使用  .tar的  文件包,因为里面文件比较全,

包含相关文档等

HTFS介绍

htfs做到了可靠性的创建了多份数据块儿(data blocks),的复制(replicas),并将它们放在服务器群的计算节点当中(ompute nodes),

MapReduce就可以在他们所在的及诶点上处理数据了

HTFS结构:

NameNode
DataNodes
存储元数据(文件的大小,权限、版本等等)
存储文件内容
缘数据保存在内存中(当然磁盘中也有,只是他是先加载到物理磁盘,运行时在读取到内存)
文件系统保存在磁盘中
保存文件,block,datanode之间的映射关系
维护了blockid到datanode的本地文件的映射关系

namenode 和 datanode的节点的关系,注意看,我上面写的,datanodes我写的是复数形式,这里是因为

是一对多的关系,一个namenode的对应多一个datanode

HTFS的运行机制:

HTFS数据存储单元(Block - 存放到 datanode上):

① 文件被分割成固定大小的数据块,同时分布在多个 数据存储单元中(作为副本),副本越多就会减少丢失率,默认情况下,每个block

② 默认都会有三个副本文件,要存放在 集群服务器中的不同机器硬盘上

③ block 工作单元被创建之后,大小固定是多大就是多大,不能在更改size,但是副本的个数,可以更改;

④ 如果集群中,摸一个block的节点挂掉了,这是,会自动创建一个新的副本block,将之前的数据,从另外的正常运行的block中拷贝文件过去

HTFS的 NameNode:

a) 功能是,接受客户端的读写服务

b) 保存的的metadata信息包括:① 文件owership 和 permissions  ; ② 文件包含哪些模块  ; ③ Block保存在哪个 DataNode(由 dataNode启动时 上报给 nameNode,由namenode加载到内存)

c) metadata存储到磁盘上的文件名称为 fsimage,

d) Block的位置不会保存到 fsimage

e) edits 记录时,metadata的操作日志

HTFS 的读流程:(图片来自互联网)

client先open从namenode中获取文件的名称 ,上面有说过,数据的存储是存储在 datanodes中的,而namenode中存储的是 元数据,也就是数据的相关信息;

然后客户端根据获取的文件名称,从datanodes中读取数据。

HTFS 文件权限:

与LINUX文件权限类似

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

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

--- HDFS 的权限目的:不做密码的认证,说白了,你使用的用户名,这个用户就拥有所有权限

Hadoop 的安全模式:

注:该状态下,不能够对HDFS 进行操作,比如读写操作,你只能看着,这个过程可以理解就是,datanode数据加载过程中到 向namenode汇报的过程,这个阶段需要时间,这个时间段就是 安全的模式,当然可以强制终止,但是强制的结果就是,导致数据的丢失。所以不建议。

namenode启动的时候,将fsimage的映像文件加载到内存,

Hadoop 系列 - (1) - 学习随笔 - 起源、构成的更多相关文章

  1. ActiveReport系列报表开发随笔收集

    转自:博客园 http://www.cnblogs.com/dahuzizyd/archive/2007/04/11/ActiveReport_All.html 使用ActiveReport for ...

  2. Hive入门学习随笔(一)

    Hive入门学习随笔(一) ===什么是Hive? 它可以来保存我们的数据,Hive的数据仓库与传统意义上的数据仓库还有区别. Hive跟传统方式是不一样的,Hive是建立在Hadoop HDFS基础 ...

  3. typeScript学习随笔(一)

    TypeScript学习随笔(一) 这么久了还不没好好学习哈这么火的ts,边学边练边记吧! 啥子是TypeScript  TypeScript 是 JavaScript 的一个超集,支持 es6 标准 ...

  4. [大牛翻译系列]Hadoop系列性能部分完结

    Hadoop系列性能部分完结.其它的部分发布时间待定. Hadoop系列将不再一日一篇,开始不定期发布.

  5. 【Xamarin挖墙脚系列:学习资料大放送】

    原文:[Xamarin挖墙脚系列:学习资料大放送] 最靠谱的还是官方的文档,英文的,借着翻译工具,硬看吧.还能学习英文........... https://developer.xamarin.com ...

  6. (转) 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ

    特别棒的一篇文章,仍不住转一下,留着以后需要时阅读 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ

  7. Hadoop权威指南学习笔记二

    MapReduce简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考,有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.n ...

  8. Hadoop Streaming框架学习2

    Hadoop Streaming框架学习(二) 1.常用Streaming命令介绍 使用下面的命令运行Streaming MapReduce程序: 1: $HADOOP_HOME/bin/hadoop ...

  9. Hadoop Streaming框架学习(一)

    Hadoop Streaming框架学习(一) Hadoop Streaming框架学习(一) 2013-08-19 12:32 by ATP_, 473 阅读, 3 评论, 收藏, 编辑 1.Had ...

随机推荐

  1. Modifying the ASP.NET Request Queue Limit

    Modifying the ASP.NET Request Queue Limit When ASP.NET is queried, the request for service is carrie ...

  2. 统计学习方法——P1

    背景基础知识备忘 平均差 MD=(∑|xi-x'|)/n 加权平均差 A.D=(∑|xi-x'|fi)/∑fi 方差 标准差 SD=方差的平方根 分布函数:   设X是一个随机变量,x是任意实数,函数 ...

  3. Mvc.JQuery.Datatables

    1.NuGet安装Mvc.JQuery.Datatables.Mvc.JQuery.Datatables.Templates和JQuery.Datatables https://github.com/ ...

  4. JavaScript高级程序设计23.pdf

    document对象作为HTMLDocument的一个实例,它还有一些标准的Document对象所没有的属性,这些属性提供了网页上的一些信息 //取得文档标题 var title1=document. ...

  5. std::move()和std::forward()

    std::move(t)负责将t的类型转换为右值引用,这种功能很有用,可以用在swap中,也可以用来解决完美转发. std::move()的源码如下 template<class _Ty> ...

  6. linux下在多个文件夹中查找指定字符串的命令

    例如,想要在当前文件夹下的多个.c或者.txt文件中查找“shutdown”字符串, 可以使用“grep shutdown ./*.c”或“grep shutdown ./*.txt”即可 使用fin ...

  7. Hadoop版Helloworld之wordcount运行示例

    1.编写一个统计单词数量的java程序,并命名为wordcount.java,代码如下: import java.io.IOException; import java.util.StringToke ...

  8. 【python自动化第六篇:面向对象】

    知识点概览: 面向对象的介绍 面向对象的特性(class,object)实例变量,类变量 面型对象编程的介绍 其他概念 一.面向对象介绍 编程范式:面向对象,面向过程,函数式编程 面向过程:通过一组指 ...

  9. Quartz定时任务学习(五)触发器

    顾名思义,Trigger(触发器)的责任就是触发一个 Job 去执行.当用 Scheduler 注册一个 Job 的时候要创建一个 Trigger 与这个 Job 相关联.Quartz 提供了四种类型 ...

  10. hadoop ssh无密码登陆

    VM DHCP蛋疼了,这次整个static... scp