Hadoop offline edits viewer 指导

本文固定链接:https://www.askmac.cn/archives/offline-edits-viewer.html

本文是官方文档的翻译,原文地址是:

http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsEditsViewer.html

 

1概述

 

离线Edits 视图是一个解析Edits日志文件的一个工具。当前的处理器可以很好的在不同格式之间进行转换,包括比二进制格式更易度的XML

 

这个工具可以解析-18(大致相当于hadoop0.19)和之后的edits格式。这个工具只在文件上操作,不需要Hadoop集群运行。

 

输入格式支持:

1.二进制:一般hadoop内部使用的二进制格式(www.askmac.cn)

2.XML:由XML处理器生成的XML格式,被后缀为.xml的文件所使用

离线edit viewer 提供了一系列输出处理器(除非有特别的说明,处理器的输出可以转换回原来的edit文件):

1.二进制

2.xml

3.stats:打印出统计数据,这不能被转换回edits文件

[Read more…]

Hadoop 高级MapReduce开发

本文固定链接:https://www.askmac.cn/archives/advanced-mapreduce-development.html

 

高级MapReduce开发

 第五章从我们熟悉的SQL概念的角度讨论了MapReduce的基础知识。学习了如何用MapReduce来解决一些常见的问题。还学习了数据是如何从输入文件中读取,然后在MAP中处理,使用Partitioner传送至Reducers,最后由Reducers处理,并写入HDFS输出文件中去的。

本章探讨SQL的排序和连接特性,这需要引入MapReduce程序更为复杂的概念。我们学习了多个输出文件是如何从单一的MapReduce程序被写入的。最后,我们了解了计数器,它可以用来收集MapReduce程序的统计数据(www.askmac.cn)。

 

MapReduce编程模式

 

本章介绍了在SQL功能背景下,MapReduce设计模式:

  • 排序:当需要输出必须按照一定的标准进行排序时
  • 连接:以各表的相似列值为基础,将各个不同的表组合起来

在看这些案例之前,我们先来简单探讨一下Hadoop框架基本的I / O类。搞清楚这一点,你就能真正了解Hadoop在幕后是如何工作的。

 

   Hadoop I / O介绍

本章介绍了两种常见的基于关系数据库的案例:排序和连接。但首先,你需要了解Hadoop的I / O系统。第5章讨论了以下类:

  • Text
  • IntWritable

 

这些由Hadoop框架提供的类,有非常具体的实现方案,使其能够作为Mappers 和Reducers的键和值被使用。我们首先讨论提供此功能的这些类的特点。在这一过程中,也应该学会如何在Hadoop框架内开发可作为键和值类型使用的自定义类。

用于Mappers 和Reducers中键和值的所有类,都应该能够被序列化为一个原始字节流,以及反序列化回类实例。当被读入Mapper 后,这些类实例被反序列化,然后再序列化到一个字节流,并通过网络发送给Reducer 使用。在Reducer 节点内,这些原始字节被反序列化回Reducer 端的键/值类实例中。该记录由Reducer 端输入键排序(正如第5章中所讨论的,此进程一部分在Mapper 上进行,最终在Reducer上完成),然后提交给Reducer的reduce方法。最后,Reducer输出需要数据,序列化成原始字节,并写入到磁盘(www.askmac.cn)。

 

键和值类的主要特征如下:

  • 用作键和值的类应该能够被序列化和反序列化
  • 用作Reducer端键的类应该能够支持用户自定义排序

[Read more…]

Hadoop Architecture 架构

本文固定链接:https://www.askmac.cn/archives/hadoop-architecture.html

 

本文是官方文档的翻译:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html

1介绍

 

HDFS 是一个分布式的文件系统,被设计运行在商业硬件上。它和现有的分布式文件系统有很多相似之处。但是,也于其他的分布式文件系统有显著的差异。HDFS是高度容错的,并且被设计来部署到底成本的硬件上。HDFS提供高吞吐量访问应用程序数据,并适用于那些有很大数据集的应用程序。HDFS放松一些POSIX请求使得流媒体访问文件系统数据。HDFS最初的基础设施构建是为了Apache Nutch搜索引擎项目。HDFS是Apache Hadoop核心的项目部分。该项目的URL是http://hadoop.apache.org/

 

 

 

2 假设和目标

 

2.1 硬件故障

 

硬件故障是标准的而不是例外。一个HDFS实例可能包括数百或数千个服务器,每一个存储文件系统的部分数据。事实上,这里有大量的组件,每个组件都有一个不一样的失效概率,意味着HDFS的一些组件总是不能提供功能。因此,故障的快速检测,自动的恢复是HDFS的一个核心构架目标(www.askmac.cn)。

 

2.2 流数据访问

运行在HDFS中的应用程序需要流媒体来访问他们的数据集。它们不是一般运行于通用文件系统的通用应用程序。HDFS被设计为批处理,而不是由用户交互使用。重点是高吞吐量的数据访问,而不是低延迟的数据访问。POSIX强加的一些需求并不是HDFS的应用程序所需要的。POSIX在一些关键领域中的词义已经被交换,来增加数据吞吐速率。

 

2.3 大数据集

 

那些在HDFS上运行的应用程序由大量的数据集。HDFS中一个典型的文件在10亿字节到百万兆字节大小。因此,HDFS被调整支持大文件。它应该提供高聚集数据带宽,并且在一个集群中有数百个节点的规模。它应该支持在一个单一的实例有数以百万计的文件。

[Read more…]

hadoop snapshots 快照实验

本文固定链接:https://www.askmac.cn/archives/hadoop-snapshots-try.html

1 实验环境

 

hadoop 2.7   jdk 1.8

 

在之前的单namenode非HA的hadoop环境中进行,其中3个datanode

 

各个节点分布如下:

 

10.0.0.22            dbdao         # NameNode
10.0.0.23            dbdao2        # ResourceManager
10.0.0.24            dbdao3        # web app proxy and MR Jobhistory server
10.0.0.25            dbdao4        # DataNode
10.0.0.26            dbdao5        # DataNode
10.0.0.27            dbdao6        # DataNode

 

 

2 创建快照

2.1 在hdfs中创建snapshottable目录

 

hdfs dfs -mkdir /hadoop-snapshot

 

然后检查目录是否成功创建

hdfs dfs -ls /

 

最后允许快照

hdfs dfsadmin -allowSnapshot /hadoop-snapshot


[Read more…]

hadoop snapshots 快照

本文是官方文档的翻译固定链接为:https://www.askmac.cn/archives/hadoop-snapshots.html

原文链接:http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HdfsSnapshots.html

 

1概述

 

HDFS 快照是文件系一个时间点的只读的副本。快照可以是部分文件系统,或者整个文件系统。一些场景使用快照的场景是数据备份,防止用户误操作和灾难恢复。

 

使用HDFS 快照是高效的:

  • 快照创建是瞬间的:成本是0(1)排除查找信息节点的时间 。
  • 额外的内存使用仅仅当对快照进行修改时产生:内存使用时0(M),M是修改文件/目录的数量。
  • 在datanode中的块不会被拷贝:快照文件记录这些块列表和文件大小。不会产生数据拷贝。
  • 快照不会对日常的HDFS操作产生不利的影响:修改被按反向时间排序记录,这样当前数据可以直接的访问。快照数据是由当前数据减去修改数据计算出来的(www.askmac.cn)。

 

1.1 snapshottable目录

 

快照可以产生在任何被设置为snapshottable的目录中。一个snapshottable目录可以同时容纳65536个快照。snapshottable目录没有个数上限,管理员可以设置任意个snapshottable。如果一个snapshottable中存在快照,那么这个目录在删除所有快照之前,不能删除或改名。

嵌套的snapshottable目录在现在并不支持。换句话说,如果一个目录的父目录/子目录是一个snapshottable目录的话,那么其不能设置为snapshottable。

 

1.2 快照 路径

 

对于一个snapshottable目录,”.snapshot”组件有利于访问其快照。假设/foo是一个snapshottable目录,/foo/bar是 /foo中的一个文件/目录,/foo有一个快照s0,那么这个路径

/foo/.snapshot/s0/bar

[Read more…]

Hadoop MapReduce开发的基础知识

本文固定链接:https://www.askmac.cn/archives/basics-of-mapreduce-development.html

 

5.MapReduce 开发的基础知识

 

 

在前面的章节中,我们将Hadoop作为一个平台介绍给你。您了解了Hadoop架构背后的的概念,知道Hadoop管理的基础知识,甚至还编写了基本的MapReduce程序。

在这一章中,你将学习MapReduce编程的基本原理以及MapReduce程序常见的设计模式,并附带样本用例。这些基本原理将帮助你在下面的章节中深入理解MapReduce的高级概念。

 

 

5.1  Hadoop和数据处理

 

这里将通过实践案例来介绍MapReduce的基本原理。 RDBMS和SQL在数据处理中是无处不在的;我们使用SQL中的语言元素来解释MapReduce的基本概念。

在SQL语言元素背景下讨论MapReduce的基本概念不仅为你创造了一个了解MapReduce的熟悉环境,并且也将使你体会到当数据集很大时,MapReduce解决常见数据处理问题的合适性。

为了实现本章目标,我们使用了航空公司的数据集,包括到从1987年2008年所有商业航班抵达及起飞的详细信息。我们首先介绍一下这个数据集;然后你就可以开始通过MapReduce依据我们提到的SQL语言元素处理常见数据问题。在这一过程中,您将熟悉MapReduce的各个组成部分,其中包括:

  • Mapper
  • Reducer
  • Combiner
  • Partitioner

 

5.2 回顾航空数据集

 

本章使用了包括美国国内商业航班从1987年到2008年航班到达和起飞详细信息的航空公司数据集。该数据集是以逗号分隔的(CSV)格式,拥有大约120万条记录。数据集未压缩格式的磁盘总容量为120 GB。这是一个适合Hadoop处理的比较大的数据集,但也不是太大,所以很适合这本书的目的。选择该数据集的另一个原因是要在结构化数据处理的背景下讨论MapReduce。虽然Hadoop也用于非结构化数据处理,但其最常见的用途是在结构化数据集上执行大规模的ETL和把它用作大型数据集的数据仓库。该航空公司数据集高度结构化,适合用于解释SQL语言元素方面的MapReduce概念。该数据集可从http://stat-computing.org/dataexpo/2009/the-data.html下载。

数据集各种字段如表5​​-1所示。

[Read more…]

用Hadoop的各种语言来进行wordcount(3):Apache Crunch

 

本文永久链接:https://www.askmac.cn/archives/hadoop-wordcount-3.html

 

 

 

Hadoop的各种语言来进行wordcount3):Apache Crunch

这是Wordcount的最后一篇讲座了。今天用crunch在MapReduce与Spark两方面进行wordcount。

 

Crunch (MapReduce)

Apache Crunch是apache project的OSS,所以这是将Google的Java Flume作为基础的。通过使用crunch,可以简单地记述mapreduce(现在是spark)的pipeline(现在是spark的program)的库。(即可以简单做到Apache Crunch:MapReduce 模块的java 库)

Crunch是由Cloudera的首席数据科学家,Josh Will开发、维护的。国外的数据科学家都是自己开发必要的工具呢。(Cloudera OryxImpyla、其他)。真是太厉害了。

 

crunch的参考链接

http://crunch.apache.org/getting-started.html

WordCount的代码参考crunch的页面,可以下载演示用代码来执行。

git clone http://github.com/jwills/crunch-demo

[Read more…]

用Hadoop的各种语言进行wordcount(2):Apache Spark

本文永久链接地址:https://www.askmac.cn/archives/spark-wordcount-2.html

 

继续昨天的内容,今天也是进行wordcount。今天是用Apache Spark (ScalaPythonJava来执行wordcount。

Spark是用Scala、Python、Java来进行wordcount。Scala与Python是用REPL,Java是用Spark应用来执行。

Spark中的wordcount是在spark站点张有的样本,我参考了Cloudera的博客。

https://spark.apache.org/examples.html

http://blog.cloudera.com/blog/2014/04/how-to-run-a-simple-apache-spark-app-in-cdh-5/

github 上的位置 https://github.com/kawamon/wordcount.git

 

Spark (Scala)

 

首先从Scala开始。

 

Cloudera Quickstart VM的Spark有版本问题,在spark-shell启动时会出现版本错误。

参考信息:http://community.cloudera.com/t5/Advanced-Analytics-Apache-Spark/5-1-Quickstart-VM-issue/td-p/16684

这次我们就无视安全性,来进行以下变更。

 

$ sudo -u hdfs hdfs dfs -chmod -R 777 /user/spark

 

 

另外,终止Quickstart VM进行启动的情况下,会有不能顺利与Spark Maste连接的情况。这时请试着重启Master与Worker(与History Server)

 

 

代码

 

val file = sc.textFile("hdfs://quickstart.cloudera/user/cloudera/input")
val counts = file.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _, 1)  

counts.saveAsTextFile("hdfs://quickstart.cloudera/user/cloudera/spark_scala.output")

[Read more…]

用Hadoop的各种语言进行wordcount(1)

本文永久链接:https://www.askmac.cn/archives/hadoop-wordcount-1.html

 

 

Hadoop的各种语言进行wordcount1

 

我稍微去调查了下Apache Crunch,顺便就在Hadoop中试着用各种语言来执行wordcount。首先是用MapReduceHadoopStreamingHivePig执行了wordcount

(追记):在github中放code:https://github.com/kawamon/wordcount.git

 

 

Wordcount的闲话

 

Wordcount经常在Hadoop的MapReduce的最开始的说明中使用,也有Hello World这样的意思。

 

Hadoop的MapReduce中,Wordcount作为样本拿来讲解的理由实在有点暧昧,大家肯定想问,为什么要拿wordcount来做样本呢。

 

现在处理所谓的量很多的大数据时,有两个问题。

  1. 为了将存储中保存的大量数据能用CPU来读入处理,移动数据是非常费时间的
  2. 用1台机器来执行耗费的时间太长(量大到内存上无法搭载,或者1台的CPU无法处理)

那么让我们试着使用之前安装的Cloudera Quickstart VM来执行吧。

 

准备

首先在HDFS中复制测试用的数据。这次使用的是crunch的样本,使用的是两个单纯的文件(file01, file02)(这是为了更容易比较结果)。

 

$ hadoop fs -cat input/file01
Hello World Bye World

$ hadoop fs -cat input/file02

Hello Hadoop Goodbye Hadoop

 

 

 

MapReduce (Java)

 

 

首先是MapReduce (Java)。New API的WordCount。我参考了下述教程,但因为是Old API,所以需要做少许变更,请不要使用StringTokenizer。

http://www.cloudera.com/content/cloudera/en/documentation/hadoop-tutorial/CDH5/Hadoop-Tutorial/ht_wordcount1_source.html

 

[Read more…]

Hadoop管理

本文固定链接:https://www.askmac.cn/archives/hadoop-administration.html

 

 

Hadoop管理

 

这一章主要讨论Hadoop在一个多节点集群上的管理。你在这一章将探索Hadoop详细的配置文件,学习Hadoop是如何支持在一个集群中的一个组织中包含多个组的。Hadoop有各种类型的调度器来支持这个功能。本章的目标是使你观察到当一个Hadoop job执行时,集群中每个节点发生了什么微妙变化。

 

1. Hadoop配置文件

了解了Hadoop中的各种配置文件及其用途后,接下来将要探讨诸如调度器和Hadoop管理之类的概念。

使用Hadoop集群的每一个机器都有其自己的一套配置文件。Hadoop早期版本只有一个配置文件:hadoop-site.xml。接下来的版本将这一文件按功能分为不同文件。此外,有两种配置文件:*-default.xml 和 *-site.xml。*-site.xml文件的配置能覆盖*-default.xml文件的配置。

*-default.xml文件为只读,是直接从JAR文件类路径中读取的。这些文件以及它们相应的位置见表4-1.

 

4-1 Hadoop的默认配置文件

配置文件              用途

core-default.xml         默认Hadoop的核心属性。文件位于以下JAR文件中:

hadoop-common-2.2.0.jar(假设版本2.2.0)

hdfs-default.xml         默认HDFS属性。文件位于以下JAR文件中:

hadoop-hdfs-2.2.0.jar  (假设版本2.2.0)

mapred-default.xml      默认MapReduce属性。文件位于以下JAR文件中:

hadoop-mapreduce-client-core-2.2.0.jar(假设版本2.2.0)

yarn-default.xml         默认YARN属性。文件位于以下JAR文件中:

hadoop-yarn-common-2.2.0.jar (假设版本2.2.0)

 

网站特定配置文件通常位于$ HADOOP_CONF_DIR文件夹。这些配置文件会覆盖表4-1中提到的默认文件,代表你的集群(网站)的独特属性 。

网站特定文件中没有提到的属性,使用默认文件中的属性值。这些文件见表4-2.

 

 

4-2 Hadoop网站特定配置文件

 配置文件          用途

core-site.xml      网站特定常见Hadoop属性。该文件中配置的属性覆盖core-default.xml文件的属性。

hdfs-site.xml      网站特定HDFS属性。该文件中配置的属性覆盖hdfs-default.xml文件的属性。

mapred-site.xml    网站特定MapReduce属性。该文件中配置的属性覆盖mapred-default.xml文件的属性。

yarn.xml          网站特定YARN属性。该文件中配置的属性覆盖mapred-default.xml文件的属性。

[Read more…]

沪ICP备14014813号-2

沪公网安备 31010802001379号