flume中sink到hdfs示例

  categories:资料  tags:  author:

一。 什么flume

     Flume是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
当前Flume有两个版本Flume 0.9X版本的统称Flume-og,Flume1.X版本的统称Flume-ng。由于Flume-ng经过重大重构,与Flume-og有很大不同,使用时请注意区分。
现在这个项目是 apache的一个顶级项目,地址如下:http://flume.apache.org/
原文信息:

Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data. It has a simple and flexible architecture based on streaming data flows. It

阅读全文

hadoop 2.0 yarn应用程序的执行流程

  categories:资料  tags:  author:

YARN程序的执行流程

Yarn是一个资源管理系统,负责整个集群资源的管理和分配。如果需要在一个yarn集群上运行程序:

  1. 首先得有个客户端client来提交job到ResourceManager(RM)申请资源。Client通过RMProtocol协议来与 RM通信,将应用程序运行所需的一些信息,比如local file/jars,执行的命令,参数,环境变量等提供给RM来运行应用的第一个container也就是 ApplicationMaster(AppMaster)。
  2. 如果申请到了资源,RM就在第一个container上启动AppMaster。AppMaster然后通过AMRMProtocol协议与ResourceManager通讯,注册自身,然后继续申请资源。
  3. 如果获得了containers,AppMaster会通过ContainerManager类与NodeManager通信,为任务启动 container。AppMaster同时也会提供启动container需要的一些信息,比如命令行,环境变量等。任务完成后,AppMaster会 通过AMRMProtocol::finishApplicationMaster来通知RM任务完成。同时,client可以通过查询RM来获取job 的状态信息,或者如果AppMaster支持也可以直接从AppMaster查询信息。如果需要,client可以通过 ClientRMProtocol::forceKillApplication来kill掉application。

整个执行流程可以参考下图(来源网络):

hadoop-yarn-job-run-flow-diagram

三个角色

  1. client 即客户端,负责将应用程序提交到RM。
  2. AppMaster 即整个应用程序的核心,负责与RM通信,申请资源,启动containers。并监控containers的执行情况,在container执行失败后做failover的处理。
  3. container 就是具体干活的,和具体业务相关的一些处理逻辑。

三个RPC协议

  1. ClientRMProtocol(Client<–>ResourceManager):客户端与RM通信的协议,可以启动AppMater,查询或者kill AppMaster。
  2. AMRMProtocol(ApplicationMaster<–>ResourceManager):AppMaster与RM通信,AppMaster可以向RM注册和注销自己,也可以向RM申请资源以启动container。
  3. ContainerManager(ApplicationMaster<–> NodeManager):AppMaster与NM通信,可以启动或者停止一个container,也可以获取container的执行状态。

Distributed shell

编写yarn应用程序的详细步骤可以直接参考源码自带的distributed shell的例子。distributed shell是在每个节点上执行一条shell命令或者一个脚本,对于理解基本的概念还是很有帮助的。

YARN编程框架的开发

可以看到,一个YARN应用程序的编写,大量的工作是在编写客户端和AppMaster。而AppMaster要处理资源申请,启动和监控container,尤其是container的fail over,这才是真正值得关注的地方。对于大量的应用程序来说,AppMaster的工作机制可能相同,这就可以抽象出一个通用的AppMaster框架。框架的使用者只需要关心自己的具体应用逻辑即container就可以了,可以大大减少开发成本。

其实Yarn已经提供了一个可以直接使用的客户端-MRClienService和AppMaster-MRAppMater。MapReduce 也只是Yarn上的一种通用的框架,所以完全可以参考MRAppMaster来实现自己的框架。如类似storm的流式计算框架,或者调度RPC Service的框架,或者支持MPI的框架。目前github上已经有类似的项目出现了,相信不久就会出现一些通用的框架。

 … 阅读全文

spark基于hadoop集群环境的搭建

  categories:资料  tags:  author:

spark和hadoop都是两个炙手可热的两个项目,都是大名鼎鼎, hadoop的联邦高可用集群已经搭建完毕。

今天基于新版的spark1.3.1并且构建在hadoop2.7上,安装过程如下:

安装前提, 安装好hadoop集群,略。

一. 安装scala

1. 进入下载页面 http://www.scala-lang.org/download/2.11.7.html

2. 下载如下scala版本 http://downloads.typesafe.com/scala/2.11.7/scala-2.11.7.tgz?_ga=1.131438735.1254462619.1436380164

3. 上传的服务器上相关目录

4. 解压缩scala文件 tar -xvf scala-2.11.7.tgz

5. 验证scala,  输入scala -version
Scala code runner version 2.11.7 — Copyright 2002-2013, LAMP/EPFL

— $ scala
Welcome to Scala version

阅读全文

Hadoop MapReduce工作原理

  categories:资料  tags:  author:

1.剖析MapReduce作业运行机制

1).经典MapReduce–MapReduce1.0

整个过程有有4个独立的实体

  • 客户端:提交MapReduce
  • JobTracker:协调作业的运行
  • TaskTracker:运行作业划分后的任务
  • HDFS:用来在其他实体之间共享作业文件

以下为运行整体图

A.作业的提交

JobClient的runJob是用于新建JobClient实例并调用其submitJob()方法的便捷方式,提交Job后,runJob()每秒轮询检测作业的进度,随时监控Job的运行状态。

其中JobClient的submitJob()方法所实现的作业提交过程:

  • 向JobTracker请求一个新的作业ID
  • 检查作业的输出说明
  • 计算作业的输入分片
  • 将运行作业所需要的资源(Jar文件,配置文件和计算所得输入分片)复制到一个作业ID命名的目录下JobTracker的文件系统中。

B.作业的初始化

JobTracker接收对其提交的作业后,会把这个调用放入一个队列,交由作业调度器调度,初始化。初始化包括创建一个表示正在运行作业的对象—封装任务和记录信息,以便跟踪任务的状态和进程

C.任务的分配

TaskTracker运行简单的循环来对JobTracker发送心跳,告知自己的是否存活,同时交互信息,对于map任务和reduce任务,TaskTracker会分配适当的固定数量的任务槽,理想状态一般遵循数据本地化,和机架本地化

D.任务的执行

第一步:TaskTracker拷贝JAR文件到本地,第二部:TaskTracker新建本地目录,将JAR文件加压到其下面;第三步:TaskTracker新建一个TaskRunner实例运行该任务。

Streaming和Pipes可运行特殊的Map和Reduce任务,Streaming支持多语言的编写,Pipes还可以与C++进程通信,如下图:

E.进程和状态的更新

通过Job的Status属性对Job进行检测,例如作业云习惯状态,map和reduce运行的进度、Job计数器的值、状态消息描述等等,尤其对计数器Counter(计数器)属性的检查。状态更新在MapReduce系统中的传递流程如下

F.作业的完成

当JobTracker收到Job最后一个Task完成的消息时候便把Job的状态设置为”完成“,JobClient得知后,从runJob()方法返回

2).Yarn(MapReduce 2.0)

Yarn出现在Hadoop 0.23和2.0版本中,相对前面 MapReduce的性能有不少的提高

相比较MapReduce1.0,JobTracker在MRv2 中被拆分成了两个主要的功能使用守护进程执行:资源管理和任务的调度与监视。这个想法创建一个全局的资源管理(global ResourceManager (RM))和为每个应用创建一个应用管理(ApplicationMaster (AM))。一个应用可以使一个MR

阅读全文

Hadoop的kerberos的实践部署

  categories:资料  tags:  author:
根据原文,结合从网络上查到的资料汇总起来,形成便于阅读的本文

一. Hadoop的认证机制

相关hadoop安全问题参考:大数据安全Hadoop安全模型的演进

hadoop安全认证主要涉及kerberos和HTTP SPNEGO, kerberos下面有介绍, HTTP SPNEGO 和kerberos 的介绍如下:Kerberos and SPNEGO 以及 SPNEGO

另外, 下面是一些早期网络上的有关使用SPNEGO文章,可以部分辅助理解SPNEGO
管理SPNEGO TAI:关于使用Kerberos服务主体名称的提示
如何在Notes中通过account使用SPNEGO单点登录
Kerberos原理
基于 SAML 的 WebSphere Application Server 单点登录的场景设计
跨 KDC 域的 WebSphere Web Services Security 应用中的 Kerberos 加密算法

阅读全文

大数据安全Hadoop安全模型的演进

  categories:资料  tags:  author:

敏感信息的安全和保护是当今人们最关心的问题之一。进入大数据时代,很多组织都在从各种源头收集数据,进行分析,并基于对海量数据集的分析做出决 策,因此这一过程中的安全问题变得愈发重要。与此同时,HIPAA和其他隐私保护法之类的法律法规也要求组织加强对这些数据集的访问控制和隐私限制。来自 内部和外部攻击者的网络安全漏洞与日俱增,通常都要数月之后才能发现,而那些受此影响的人正在为此付出代价。没能对他们的数据做出恰当访问控制的组织将受 到起诉,出现在负面报道中,并将面临监管机构的罚款。

请想一想下面这些让人大开眼界的统计数据:

  • 赛门铁克和Ponemon研究所今年公布的一项研究表明,一个安全漏洞在美国的平均组织化成本是540万美元1。另据最近一项研究表明,仅仅网络犯罪在美国造成的损失每年就有140亿美元之多。
  • 2011年索尼游戏机网络中出现的漏洞可以算是近代最大的安全漏洞之一,专家们估计索尼与该漏洞相关的损失大约在27亿到240亿美元之间(范围很大,但这个漏洞太大了,所以几乎难以对其进行量化)。2
  • Netflix和AOL已经因为其管理的大量数据和对个人信息的保护而受到金额达数百万美元的起诉(某些已经立案),尽管他们已经对这些数据做了“匿名化”处理并且是为了研究才公布的。3
  • 跟安全漏洞相关的除了可量化的成本(客户和业务合作伙伴的损失,诉讼,监管罚款),经历此类事件的组织的可信度和声誉还会受到影响,甚至可能会导致公司歇业。4

简而言之,如果没有恰当的安全控制,大数据很容易变成花费巨大的大问题。

对于处理大数据的组织来说这意味着什么?意味着你拥有的数据越多,对数据的保护就越重要。意味着不仅要安全有效地控制离开自有网络的数据,还必须做 好网络内部的数据访问控制。依据数据的敏感程度,我们可能要确保数据分析师能看到的数据是可以让他们分析的数据,并且必须明白发布这些数据及其分析结果可 能产生的后果。仅Netflix数据泄漏一个案例就足以表明,即使已经试图对数据做了“匿名化”处理,也可能会发布一些意料之外的信息——一些在差异化隐私领域标明的东西。

Apache Hadoop是最流行的大数据处理平台之一。尽管最初设计Hadoop时根本没考虑安全问题,但它的安全模型在不断地演进。Hadoop的兴起也招致了很 多批判,并且随着安全专家不断指出其潜在的安全漏洞及大数据的安全风险,使得Hadoop一直在改进其安全性。“Hadoop安全”市场曾出现过爆炸性的 增长,很多厂商都发布了“安全加强”版的Hadoop和对Hadoop的安全加以补充的解决方案。这类产品有Cloudera Sentry、 IBM InfoSphere Optim Data Masking、 英特尔的安全版Hadoop、DataStax企业版、 DataGuise for Hadoop、用于Hadoop的Protegrity大数据保护器、Revelytix Loom、Zettaset 安全数据仓库,此外还有很多,这里就不再一一列举了。与此同时,Apache也有 Apache Accumulo这样的项目,为使用Hapdoop提供了添加额外安全措施的机制。最终还出现了 Knox网关 (由HortonWorks贡献)和Rhino项目(由英特尔贡献)这样的开源项目,承诺要让Hadoop本身发生重大改变。

要让Hadoop达到安全性要求的巨大需求使得Hadoop一直在发生着变化,这也是我要在本文中重点讨论的内容。

Hadoop安全(简)史

阅读全文

hadoop2.x本地伪分布环境实践yarn

  categories:资料  tags:  author:

本参照hadoop官方网站的 说明进行操作, 最后在参照文档中遇到一些问题,通过查找百度找到解决方案,把操作过程记录下来。

Purpose

This document describes how to set up and configure a single-node Hadoop installation so that you can quickly perform simple operations using Hadoop MapReduce and the Hadoop Distributed File System (HDFS).

本文介绍配置单节点(本地程序,并非集群)hadoop的方法, 通过这个集群可以快速操作在hdfs文件系统下执行hadoop的mapruduce程序。

Prerequisites

Supported Platforms

阅读全文

Hadoop MapReduceV2(Yarn) 框架简介

  categories:资料  tags:  author:

以前做推荐系统是, 使用了hadoop,顺便也研究了他源代码, 当时是0.20.x

几年过去了hadoop发生了重大提升, 感觉自己落伍了, 在网络上找了几个关于yarn的学习资料看了一下, 感觉很好,分享一下, 视频版权属于原作者,我是在百度网盘搜索到的, 仅仅分享一下。

链接: http://pan.baidu.com/s/1dDhcio5 密码: 6gwp

我看过视频了, 感觉里面更多是分析hadoop1.x系列的问题, 然后讲解些hadoop2.x的一些新特性的, 在会后两集中才涉及yarn的

另外下面是 一个非常好 的介绍yarn的文章,来源:

http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/

原 Hadoop MapReduce 框架的问题

对于业界的大数据存储及分布式处理系统来说,Hadoop 是耳熟能详的卓越开源分布式文件存储及处理框架,对于 Hadoop 框架的介绍在此不再累述,读者可参考 Hadoop 官方简介。使用和学习过老 Hadoop 框架(0.20.0 及之前版本)的同仁应该很熟悉如下的原 MapReduce 框架图:
图 1.Hadoop 原 MapReduce 阅读全文

Hadoop学习入门

  categories:资料  tags:  author:

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算

HDFS的关键元素:Block:将一个文件进行分块,通常是64M。

NameNode:保存整个文件系统的目录信息、文件信息及分块信息,这是由唯一一台主机专门保存,当然这台主机如果出错,NameNode就失效了。在Hadoop2.*开始支持activity-standy模式—-如果主NameNode失效,启动备用主机运行NameNode。
DataNode:分布在廉价的计算机上,用于存储Block块文件。

Hadoop由 Apache Software Foundation 公司于 2005 年秋天作为Lucene的子项目Nutch的一部分正式引入。它受到最先由 Google Lab 开发的 Map/Reduce 和 Google File System(GFS) 的启发。
2006 年 3 月份,Map/Reduce 和 Nutch Distributed File System (NDFS) … 阅读全文

Hadoop2.0NameNode HA实践

  categories:资料  tags:  author:

天云趋势在2012年下半年开始为某大型国有银行的历史交易数据备份及查询提供基于Hadoop的技术解决方案,由于行业的特殊性,客户对服务的可 用性有着非常高的要求,而HDFS长久以来都被单点故障的问题所困扰,直到Apache Hadoop在2012年5月发布了2.0的alpha版本,其中MRv2还很不成熟,可HDFS的新功能已经基本可用,尤其是其中的的High Availability(以下简称HA)和Federation。Cloudera也于7月制作了CDH4.0.1,包含了Hadoop 2.0的诸多新功能和组件,于是我们就基于CDH4.0.1进行了HA和Federation的测试。

此工作由我和同事张军、钱兴会共同完成。

二、hadoop为什么需要HA和Federation

1. 单点故障

在Hadoop 2.0之前,也有若干技术试图解决单点故障的问题,我们在这里做个简短的总结

  • Secondary NameNode。它不是HA,它只是阶段性的合并edits和fsimage,以缩短集群启动的时间。当NameNode(以下简称NN)失效的时 候,Secondary NN并无法立刻提供服务,Secondary NN甚至无法保证数据完整性:如果NN数据丢失的话,在上一次合并后的文件系统的改动会丢失。
  • Backup NameNode (HADOOP-4539)。它在内存中复制了NN的当前状态,算是Warm Standby,可也就仅限于此,并没有failover等。它同样是阶段性的做checkpoint,也无法保证数据完整性。
  • 手动把name.dir指向NFS。这是安全的Cold Standby,可以保证元数据不丢失,但集群的恢复则完全靠手动。
  • Facebook AvatarNode。 Facebook有强大的运维做后盾,所以Avatarnode只是Hot Standby,并没有自动切换,当主NN失效的时候,需要管理员确认,然后手动把对外提供服务的虚拟IP映射到Standby NN,这样做的好处是确保不会发生脑裂的场景。其某些设计思想和Hadoop 2.0里的HA非常相似,从时间上来看,Hadoop 2.0应该是借鉴了Facebook的做法。
  • 还有若干解决方案,基本都是依赖外部的HA机制,譬如DRBD,Linux HA,VMware的FT等等。

2. 集群容量和集群性能

单NN的架构使得HDFS在集群扩展性和性能上都有潜在的问题,当集群大到一定程度后,NN进程使用的内存可能会达到上百G,常用的估算公式为1G 对应1百万个块,按缺省块大小计算的话,大概是64T (这个估算比例是有比较大的富裕的,其实,即使是每个文件只有一个块,所有元数据信息也不会有1KB/block)。同时,所有的元数据信息的读取和操作 都需要与NN进行通信,譬如客户端的addBlock、getBlockLocations,还有DataNode的blockRecieved、 sendHeartbeat、blockReport,在集群规模变大后,NN成为了性能的瓶颈。Hadoop 2.0里的HDFS Federation就是为了解决这两个问题而开发的。

阅读全文


快乐成长 每天进步一点点