`

Hadoop 学习之三

 
阅读更多
Hadoop一些备受关注的特性与版本演进

Append : 支持文件追加功能,如果想使用Hbase,需要这个特性
RAID: 在保证数据可靠性的前提下,通过引入校验码减少数据块数目。
Symlink: 支持HDFS文件链接。
Security : 安全性。
NameNode HA: (高可用),尽管存在secondary namenode,并通过数据复制保证数据不会丢失,但当namenode出现故障,secondarynamenode无法实现
自动切换。HA可以实现此功能
HDFS Federation 和YARN : 第二代的mapreduce系统

HDFS

1.提供分布式存储机制,提供可线性增长的海量存储能力.
(利用分布式的机器硬盘形成一个总的存储空间.在任何一个节点,无论namenode或者datanode,只要发出操作命令,就可以对整个集群hdfs进行统一操作。
比如A,B,C三个机器,无论A是namenode或者datanode,A节点不仅限于A节点上面的数据,还可以可以操作整个三台机器组成的集群。
)
2.自动数据冗余,无需使用Raid,无需另外备份。(利用服务器因子实现)
3.为进一步分析计算提供数据基础。

HDFS设计基础与目标
1.硬件错误时常态。因此需要冗余。
2.流式数据访问,因此数据批量读取而非随机读写,Hadoop擅长做的是数据分析而不是事务处理。
3.大规模数据集。
4.简单一致性模型,为了降低系统复杂度,对文件采用一次性写多次读的逻辑设计,即是文件已经写入,关闭,
就不再修改
5.程序采用数据就近原则分配节点执行。

读取数据流程
1.客户端要访问HDFS中的一个文件
2.首先从namenode获得组成这个文件的数据块位置列表
3.根据列表知道存储数据块的datanode
4.访问datanode获取数据
5.namenode并不参与数据实际传输 

写入过程流程
1.客户端请求namenode创建新文件
2.客户端将数据写入DFSOutputStream
3.简历pepeline依次将目标数据写入各个datanode,建立多个副本。


HDFS体系结构

NAMENODE:存放元数据,比如命名空间,
1.管理文件系统的命名空间。
2.记录每个文件数据块在各个Datanode的位置和副本信息
3.协调客户端对文件的访问
4.记录命名空间内的改动或空间本身属性的改动
5.Namenode使用事务日志记录HDFS元数据的变化。使用影像文件存储文件系统的命名空间,包括文件映射,文件属性等。
SecondaryNameNode
  
DataNode:存放具体的数据


事务日志
影像文件

HDFS的文件系统映像和编辑日志  
文件系统客户端执行写操作时(例如创建或移动文件),这些操作首先被记录到编辑日志中。NAMENODE在内存中维护文件系统的
元数据;当编辑日志被修改时,相关元数据信息也同步更新。内存中的元数据可支持客户端的读请求。
在每次执行写操作之后,且在向客户端发送成功代码之前,编辑日志都需要更新和同步。当NAMENODE向多个目录写数据时,   
只有在所有写操作均执行完毕之后放可返回成功代码,以确保任何操作都不会因为机器故障而丢失。 

faimage文件时文件系统元数据的一个永久性检查点,并非一个写操作都会更新这个文件,因为fsimage是一个大型文件,
(甚至高达几个GB),如果频繁地执行写操作,会使系统极为缓慢。这个特性根本不会降低系统的恢复能力,因为如果
namenode发生故障,可以先把fsimage载入到内存中重新构造最近的元数据,再执行编辑日志中的各项操作。
如前所述,edits文件会无限增长,尽管这种情况对于namenode的运行没有影响,但由于需要恢复(非常长)编辑日志中的
各项操作,namenode的重启操作会比较慢。对此的解决方式是辅助namenode,为主namenode内存中的文件系统元
数据创建检查点,创建检查点的步骤如下:
1.辅助namenode请求主namenode停止使用edits文件,暂时将新的写操作记录到一个新文件中。
2.辅助namenode从主namenode获取fsimage和edits文件(HTTP GET)
3.辅助namenode将fsimage文件载入到内存,逐一执行edits文件中的操作,创建新的fsimage。
4.辅助namenode将新的fsimage文件发送回主namenode(http post)
5.主namenode从辅助namenode接受的fsimage文件替换旧的fsimage文件,用步骤1所产生的edits文件代替旧的edits文件。
同时更新fstime文件来记录检查点执行的时间。
最终,主namenode拥有最新的fsimage文件和一个更新的edits文件。创建检查点的触发条件受两个配置参数控制。
通常情况下,辅助namenode每隔一小时(fs.checkpoint.period属性设置,以秒为单位)来创建检查点;此外,
当编辑日志达到64MB时,也会创建检查点。系统每隔五分钟检查一次编辑日志的大小。

1.辅助namenode的目录结构   
2.创建检查点的过程不仅为namenode创建检查点数据,还使namenode最终也有一份检查点数据(存储在previous.checkpoint子目录中)。   
3.这份数据可用作namenode元数据的备份。(尽管非最新)。   
4.辅助namenode的previous.checkpoint目录,辅助接点的current目录和主namenode的current目录的布局相同。这种设计方案的好处   
5.是,在主namenode发生故障时,可以从辅助namenode恢复数据。   
6.一种方法时将相关存储目录复制到新的namenode中;   
7.另外一张方法是使用-importCheckpoint选项重启辅助namenode守护进程,从而将辅助namenode用作新的主namenode。   
8.借助这个选项,dfs.name.dir属性定义的目录中没有元数据时,辅助namenode就从fs.checkpoint.dir目录载入最新的检查点数据。   
9.因此无需担心操作会覆盖现有的元数据。


HDFS文件操作

1.命令行方式
2.API方式

1.1列出HDFS下的文件
注意,hadoop没有当前目录的概念,没有cd命令

[anker@anker hadoop-1.1.2]$ ./bin/hadoop fs -ls
Found 2 items
drwxr-xr-x   - anker supergroup          0 2014-04-25 22:46 /user/anker/in
drwxr-xr-x   - anker supergroup          0 2014-04-25 22:51 /user/anker/out

1.2上传文件到HDFS

[anker@anker ~]$ echo "hello hadoop hdfs" > test3.txt
[anker@anker ~]$ cat test.txt
[anker@anker hadoop-1.1.2]$ bin/hadoop fs -put ../test3.txt ./in
[anker@anker hadoop-1.1.2]$ bin/hadoop fs -cat ./in/test3.txt
hello hadoop hdfs

1.3 数据写在了那儿(从OS看)
[anker@anker current]$ pwd
/home/anker/hadoop-1.1.2/tmp/dfs/data/current


以blk开头,没有结尾为数据文件。blk的大小缺省是64M,大于64M时会自动分割,变成
多个blk文件。
meta文件为元数据文件,比如数据块跟文件的对应,以及校验和



[anker@anker current]$ ls
blk_3157498903036687291             blk_7575711193623193077_1249.meta
blk_3157498903036687291_1250.meta   blk_8019284162881630727
blk_-4941071068077027141            blk_8019284162881630727_1265.meta
blk_-4941071068077027141_1257.meta  blk_-8411529019236825895
blk_-6003480761789770138            blk_-8411529019236825895_1259.meta
blk_-6003480761789770138_1260.meta  blk_8558884646323201157
blk_-7444048057069378050            blk_8558884646323201157_1264.meta
blk_-7444048057069378050_1262.meta  dncp_block_verification.log.curr
blk_7575711193623193077             VERSION

1.4 将HDFS文件复制到本地
将in目录下的文件复制到上层目录中
[anker@anker hadoop-1.1.2]$  bin/hadoop fs -get ./in/test3.txt ../

1.5删除HDFS下的文档(无论哪个节点,实际上各个节点文件都删除掉了)

[anker@anker hadoop-1.1.2]$ bin/hadoop fs -rmr ./in/test3.txt
Deleted hdfs://anker.centos1:9000/user/anker/in/test3.txt

1.6 查看HDFS下某个文件的内容
[anker@anker hadoop-1.1.2]$ bin/hadoop fs -ls ./in
Found 2 items
-rw-r--r--   2 anker supergroup         12 2014-04-25 22:46 /user/anker/in/test1.txt
-rw-r--r--   2 anker supergroup         13 2014-04-25 22:46 /user/anker/in/test2.txt

1.7查看HDFS基本统计信息

[anker@anker hadoop-1.1.2]$ bin/hadoop dfsadmin -report
Configured Capacity: 6945988608 (6.47 GB)
Present Capacity: 5998563328 (5.59 GB)
DFS Remaining: 5997989888 (5.59 GB)
DFS Used: 573440 (560 KB)
DFS Used%: 0.01%
Under replicated blocks: 1
Blocks with corrupt replicas: 0
Missing blocks: 0

-------------------------------------------------
Datanodes available: 2 (2 total, 0 dead)

Name: 192.168.1.203:50010
Decommission Status : Normal
Configured Capacity: 3464716288 (3.23 GB)
DFS Used: 286720 (280 KB)
Non DFS Used: 473300992 (451.38 MB)
DFS Remaining: 2991128576(2.79 GB)
DFS Used%: 0.01%
DFS Remaining%: 86.33%
Last contact: Sun Apr 27 21:20:55 CST 2014


Name: 192.168.1.202:50010
Decommission Status : Normal
Configured Capacity: 3481272320 (3.24 GB)
DFS Used: 286720 (280 KB)
Non DFS Used: 474124288 (452.16 MB)
DFS Remaining: 3006861312(2.8 GB)
DFS Used%: 0.01%
DFS Remaining%: 86.37%
Last contact: Sun Apr 27 21:20:58 CST 2014


1.8 如何添加节点
 1.在新节点安装好hadoop
 2.把namenode的有关配置文件复制到该节点
 3.修改masters和slaves文件,增加该节点
 4.设置ssh免密码进入该节点
 5.单独启动该节点的datanode和tasktracker(hadoop-daemon.sh start datanode/tasktracker)
 6.运行start-balancer.sh进行数据负载均衡
 7.是否要重启集群?

  

分享到:
评论

相关推荐

    Hadoop学习资料

    Hadoop的版本衍化历史可以追溯到第一代Hadoop,主要包含三个大版本,分别是0.20.x,0.21.x和0.22.x。0.20.x版本最终演化为1.0.x稳定版,属于第一代Hadoop,即Hadoop 1.0。第二代Hadoop包括两个版本,0.23.x和2.x。这...

    Hadoop学习之路(三)Hadoop-2.7.5在CentOS-6.7上的编译

    ### Hadoop-2.7.5在CentOS-6.7上的编译...Hadoop的学习和实践不仅可以帮助我们更好地理解大数据处理的原理和技术细节,还能为后续进行更高级的大数据平台搭建奠定坚实的基础。希望本文能够对您的学习和工作有所帮助。

    最新Hadoop学习笔记

    **Hadoop学习笔记详解** Hadoop是一个开源的分布式计算框架,由Apache基金会开发,主要用于处理和存储海量数据。它的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce,两者构成了大数据处理的基础...

    java及hadoop学习资料

    这份“java及hadoop学习资料”压缩包提供了丰富的学习资源,帮助初学者或进阶者深入理解和掌握这两个领域的核心概念。 Java部分: 1. **Java基础知识**:Java的学习通常从基础语法开始,包括数据类型、变量、控制...

    Hadoop学习总结.doc

    HDFS(Hadoop Distributed File System)是Hadoop的核心组件之一,它主要用于存储大规模的数据集。HDFS默认的基本存储单位是64MB的数据块。与传统的文件系统不同,HDFS将文件分割成若干个块进行存储。尽管每个块的...

    Hadoop学习必看路线图2.pdf

    ### Hadoop学习必看路线图概览 #### 一、Linux与Python基础 - **Linux安装及基本操作**:这是Hadoop学习的基础,包括Linux系统的安装、常用的命令行操作(如文件管理、进程管理等)。熟悉Linux环境对于后续的学习...

    Hadoop入门学习文档

    ### Hadoop入门学习文档知识点梳理 #### 一、大数据概论 ##### 1.1 大数据概念 - **定义**:大数据是指无法在可承受的时间范围内用常规软件工具进行捕捉、管理和处理的数据集合。 - **特点**: - **Volume(大量)...

    Hadoop学习总结和源码分析

    “Hadoop学习总结之三:Map-Reduce入门.doc”介绍了MapReduce编程模型,它是Hadoop处理数据的主要计算框架。Map阶段将输入数据分割成键值对,通过映射函数进行初步处理;Reduce阶段则将Map的输出聚合,通过化简函数...

    3.Hadoop学习笔记.pdf

    它特别适合于存储非结构化和半结构化数据,并且能够存储和运行在廉价硬件之上。Hadoop具有高可靠性、高扩展性和高吞吐率的特点,因此它成为了处理大数据的理想平台。 Hadoop的核心组成部分包括: 1. HDFS(Hadoop ...

    hadoop入门学习文档

    - **与其他技术的关系**:虽然 Hadoop 是大数据处理的关键技术之一,但它并不是云计算的全部。云计算还涵盖了虚拟化、负载均衡等其他重要技术。 - **国内就业市场**:中国的大数据产业正处于快速发展阶段,尤其是...

    hadoop学习资料书

    【Hadoop学习资料书】 Hadoop是大数据处理领域的一个核心框架,由Apache软件基金会开发,以其分布式计算模型和高容错性而闻名。本学习资料书主要针对Hadoop的初学者,旨在提供全面的基础知识解析,帮助读者快速掌握...

    hadoop3.1.3学习资料

    3. **Hadoop生态组件**: - **HBase**:基于HDFS的分布式数据库,适合实时读写操作,常用于大数据的实时分析。 - **Hive**:提供SQL-like查询接口,用于数据仓库和数据分析。 - **Pig**:数据流处理语言,简化了...

    学习hadoop--java零基础学习hadoop手册

    ### Hadoop与Java基础知识学习手册 #### 一、Hadoop简介及Java基础知识 **标题**:“学习hadoop--java零基础学习hadoop手册” **描述**:“学习hadoop--java零基础学习hadoop手册” 本手册旨在为完全没有Java基础...

    hadoop学习笔记.rar

    三、Hadoop学习笔记之三:用MRUnit做单元测试 MRUnit是针对MapReduce任务的单元测试框架,它允许开发者对MapReduce作业进行单元测试,确保每个Mapper和Reducer的功能正确性。通过MRUnit,可以在不实际运行Hadoop集群...

    HADOOP学习笔记

    【HADOOP学习笔记】 Hadoop是Apache基金会开发的一个开源分布式计算框架,是云计算领域的重要组成部分,尤其在大数据处理方面有着广泛的应用。本学习笔记将深入探讨Hadoop的核心组件、架构以及如何搭建云计算平台。...

    hadoop学习资料(一)

    Hadoop学习资料(一)包含了从第一周到第十六周的课程笔记,是作者在深入学习Hadoop过程中积累的知识结晶。这份资料对于那些想要踏入大数据处理领域的初学者或者是正在提升Hadoop技能的人来说,无疑是一份宝贵的资源...

    Hadoop学习时间轴

    根据提供的信息,我们可以详细地解析出关于Hadoop学习时间轴中的关键知识点,这些知识点主要集中在Hadoop的基础架构、MapReduce工作原理以及Hive在实际应用中的优化等方面。 ### Hadoop学习时间轴概述 Hadoop是一...

Global site tag (gtag.js) - Google Analytics