环境准备-Hadoop安装过程
环境准备
1、利用vmware安装centOS6系统
2、Window开启VMware Network Adapter VMnet8
注意:虚拟机网络类型选择NAT;安装操作系统是开启网络默认启动;获取IP为DNS自动获取;虚拟机安装成功后,关闭防火墙;检查虚拟机网络和物理机网络是否能ping通;
3、安装jdk,版本大为1.6,采用sun公司的jdk而不是openjdk
参考:《Linux下安装jdk》
一个程序员的喃喃自语
环境准备
1、利用vmware安装centOS6系统
2、Window开启VMware Network Adapter VMnet8
注意:虚拟机网络类型选择NAT;安装操作系统是开启网络默认启动;获取IP为DNS自动获取;虚拟机安装成功后,关闭防火墙;检查虚拟机网络和物理机网络是否能ping通;
3、安装jdk,版本大为1.6,采用sun公司的jdk而不是openjdk
参考:《Linux下安装jdk》
百度作为全球最大的中文搜索引擎公司,提供基于搜索引擎的各种产品,几乎覆盖了中文网络世界中所有的搜索需求,因此,百度对海量数据处理的要求是比较高的,要在线下对数据进行分析,还要在规定的时间内处理完并反馈到平台上。百度在互联网领域的平台需求要通过性能较好的云平台进行处理了,Hadoop就是很好的选择。在百度,Hadoop主要应用于以下几个方面:
日志的存储和统计;
网页数据的分析和挖掘;
商业分析,如用户的行为和广告关注度等;
在线数据的反馈,及时得到在线广告的点击情况;
用户网页的聚类,分析用户的推荐度及用户之间的关联度。
MapReduce主要是一种思想,不能解决所有领域内与计算有关的问题,百度的研究人员认为比较好的模型应该如图3-4所示,HDFS实现共享存储,一些计算使用MapReduce解决,一些计算使用MPI解决,而还有一些计算需要通过两者来共同处理。因为MapReduce适合处理数据很大且适合划分的数据,所以在处理这类数据时就可以用MapReduce做一些过滤,得到基本的向量矩阵,然后通过MPI进一步处理后返回结果,只有整合技术才能更好地解决问题。
百度现在拥有3个Hadoop集群,总规模在700台机器左右,其中有100多台新机器和600多台要淘汰的机器(它们的计算能力相当于200多台新机器),不过其规模还在不断的增加中。现在每天运行的MapReduce任务在3000个左右,处理数据约120TB/天。
百度为了更好地用Hadoop进行数据处理,在以下几个方面做了改进和调整:
(1)调整MapReduce策略
限制作业处于运行状态的任务数;
调整预测执行策略,控制预测执行量,一些任务不需要预测执行;
根据节点内存状况进行调度;
平衡中间结果输出,通过压缩处理减少I/O负担。
(2)改进HDFS的效率和功能
权限控制,在PB级数据量的集群上数据应该是共享的,这样分析起来比较容易,但是需要对权限进行限制;
让分区与节点独立,这样,一个分区坏掉后节点上的其他分区还可以正常使用;
修改DFSClient选取块副本位置的策略,增加功能使DFSClient选取块时跳过出错的DataNode;
解决VFS(Virtual File System)的POSIX(Portable Operating System Interface of Unix)兼容性问题。
(3)修改Speculative的执行策略
采用速率倒数替代速率,防止数据分布不均时经常不能启动预测执行情况的发生;
增加任务时必须达到某个百分比后才能启动预测执行的限制,解决reduce运行等待map数据的时间问题;
只有一个map或reduce时,可以直接启动预测执行。
(4)对资源使用进行控制
对应用物理内存进行控制。如果内存使用过多会导致操作系统跳过一些任务,百度通过修改Linux内核对进程使用的物理内存进行独立的限制,超过阈值可以终止进程。
分组调度计算资源,实现存储共享、计算独立,在Hadoop中运行的进程是不可抢占的。
在大块文件系统中,X86平台下一个页的大小是4KB。如果页较小,管理的数据就会很多,会增加数据操作的代价并影响计算效率,因此需要增加页的大小。
百度在使用Hadoop时也遇到了一些问题,主要有:
MapReduce的效率问题:比如,如何在shuffle效率方面减少I/O次数以提高并行效率;如何在排序效率方面设置排序为可配置的,因为排序过程会浪费很多的计算资源,而一些情况下是不需要排序的。
HDFS的效率和可靠性问题:如何提高随机访问效率,以及数据写入的实时性问题,如果Hadoop每写一条日志就在HDFS上存储一次,效率会很低。
内存使用的问题:reducer端的shuffle会频繁地使用内存,这里采用类似Linux的buddy system来解决,保证Hadoop用最小的开销达到最高的利用率;当Java 进程内容使用内存较多时,可以调整垃圾回收(GC)策略;有时存在大量的内存复制现象,这会消耗大量CPU资源,同时还会导致内存使用峰值极高,这时需要减少内存的复制。
作业调度的问题:如何限制任务的map和reduce计算单元的数量,以确保重要计算可以有足够的计算单元;如何对TaskTracker进行分组控制,以限制作业执行的机器,同时还可以在用户提交任务时确定执行的分组并对分组进行认证。
性能提升的问题:UserLogs cleanup在每次task结束的时候都要查看一下日志,以决定是否清除,这会占用一定的任务资源,可以通过将清理线程从子Java进程移到TaskTracker来解决;子Java进程会对文本行进行切割而map和reduce进程则会重新切割,这将造成重复处理,这时需要关掉Java进程的切割功能;在排序的时候也可以实现并行排序来提升性能;实现对数据的异步读写也可以提升性能。
健壮性的问题:需要对mapper和reducer程序的内存消耗进行限制,这就要修改Linux内核,增加其限制进程的物理内存的功能;也可以通过多个map程序共享一块内存,以一定的代价减少对物理内存的使用;还可以将DataNode和TaskTracker的UGI配置为普通用户并设置账号密码;或者让DataNode和TaskTracker分账号启动,确保HDFS数据的安全性,防止Tracker操作DataNode中的内容;在不能保证用户的每个程序都很健壮的情况下,有时需要将进程终止掉,但要保证父进程终止后子进程也被终止。
Streaming局限性的问题:比如,只能处理文本数据,mapper和reducer按照文本行的协议通信,无法对二进制的数据进行简单处理。为了解决这个问题,百度人员新写了一个类Bistreaming(Binary Streaming),这里的子Java进程mapper和reducer按照(KeyLen,Key,ValLen,Value)的方式通信,用户可以按照这个协议编写程序。
用户认证的问题:这个问题的解决办法是让用户名、密码、所属组都在NameNode和Job Tracker上集中维护,用户连接时需要提供用户名和密码,从而保证数据的安全性。
百度下一步的工作重点可能主要会涉及以下内容:
内存方面,降低NameNode的内存使用并研究JVM的内存管理;
调度方面,改进任务可以被抢占的情况,同时开发出自己的基于Capacity的作业调度器,让等待作业队列具有优先级且队列中的作业可以设置Capacity,并可以支持TaskTracker分组;
压缩算法,选择较好的方法提高压缩比、减少存储容量,同时选取高效率的算法以进行shuffle数据的压缩和解压;
对mapper程序和reducer程序使用的资源进行控制,防止过度消耗资源导致机器死机。以前是通过修改Linux内核来进行控制的,现在考虑通过在Linux中引入cgroup来对mapper和reducer使用的资源进行控制;
将DataNode的并发数据读写方式由多线程改为select方式,以支持大规模并发读写和Hypertable的应用。
百度同时也在使用Hypertable,它是以Google发布的BigTable为基础的开源分布式数据存储系统,百度将它作为分析用户行为的平台,同时在元数据集中化、内存占用优化、集群安全停机、故障自动恢复等方面做了一些改进。
下面这几篇文章也是介绍百度hadoop应用的情况:
http://blog.csdn.net/zbf8441372/article/details/8169969
http://www.csdn.net/article/2011-04-28/296869
http://www.cnblogs.com/chinacloud/archive/2010/11/08/1871592.html
OpenStack,CloudStack与Hadoop的关系:
OpenStack,CloudStack处于云计算中的同一层——IaaS层,他们只是使用不同的语言,不同的设计架构分别实现了IaaS层的功能。CloudStack、OpenStack主要用于构建IaaS层,类似于Amazon EC2 和 S3 的云基础架构服务的架构。Hadoop实现了包括分布式文件系统HDFS和MapReduce框架在内的云计算软件平台的基础架构,并且在其上整合了包括数据库、云计算管理、数据仓储等一系列平台。Hadoop实现的功能实际上是PaaS层提供的服务。
OpenStack、CloudStack和Hadoop分别属于云计算中的一部分,而不是全部。
Hadoop的创始人是Doug Cutting, 同时也是著名的基于Java的检索引擎库Apache Lucene的创始人。Hadoop本来是用于著名的开源搜索引擎Apache Nutch,而Nutch本身是基于Lucene的,而且也是Lucene的一个子项目。因此Hadoop基于Java就很理所当然了,所以,Hadoop是由Java编写的。
Hadoop采用Java编写,因而Hadoop天生支持Java语言编写作业,但在实际应用中,有时候,因要用到非Java的第三方库或者其他原因,要采用C/C++或者其他语言编写MapReduce作业,这时候可能要用到Hadoop提供的一些工具。
如果你要用C/C++编写MpaReduce作业,可使用的工具有Hadoop Streaming或者Hadoop Pipes。
如果你要用Python编写MapReduce作业,可以使用Hadoop Streaming或者Pydoop。
如果你要使用其他语言,如shell,php,ruby等,可使用Hadoop Streaming。
Hadoop主要是由HDFS和MapReduce组成,HDFS是一个分布式文件系统(Hadoop Distributed File System),MapReduce则是用于并行处理大数据集的软件框架。因此,Hadoop是一个能够对大量数据进行分布式处理的软件框架,它是一种技术的实现。
Hadoop是Apache基金会下的一款开源软件,它实现了包括分布式文件系统HDFS和MapReduce框架在内的云计算软件平台的基础架构,并且在其上整合了包括数据库、云计算管理、数据仓储等一系列平台,其已成为工业界和学术界进行云计算应用和研究的标准平台。Hadoop现在已经广泛应用于包括国外的FaceBook,Twitter,Yahoo!等公司,国内的百度,阿里等,Hadoop运行在数以千计的服务器和数以万计的CPU的集群上。
基于Hadoop,用户可编写处理海量数据的分布式并行程序,并将其运行于由成百上千个结点组成的大规模计算机集群上。Hadoop已被全球几大IT公司用作其”云计算”环境中的重要基础软件,如:雅虎正在开发基于Hadoop的开源项目Pig, 这是一个专注于海量数据集分析的分布式计算程序。亚马逊公司则基于Hadoop推出了Amazon S3(Amazon Simple Storage Service ),提供可靠,快速,可扩展的网络存储服务。因此,Hadoop是云计算中一部分技术的实现,而不是全部。
云计算是继1980年代大型计算机到客户端-服务器的大转变之后的又一种巨变,但云计算的概念其实早已提出很久,早在上世纪60年代,麦卡锡就提出了把计算能力作为一种像水和电一样的公用事业提供给用户的理念,这成为云计算思想的起源。在20世纪80年代网格计算、90年代公用计算,21世纪初虚拟化技术、SOA、SaaS应用的支撑下,云计算作为一种新兴的资源使用和交付模式逐渐为学界和产业界所认知。因此,云计算的存在只是一种新的商业计算模型和服务模式。
Hadoop分布式文件系统(HDFS)
什么是HDFS
HDFS设计目标
HDFS系统特点
HDFS工作原理
HDFS服务进程
HDFS实战
Hadoop安装
HDFS命令行工具
启动、停止HDFS服务
如何查看HDFS日志
查看HDFS Web控制台
HDFS配置参数
MapReduce分布式计算框架
什么是MapReduce
MapReduce服务
MapReduce工作机制
MapReduce调度管理
MapReduce实战
运行MapReduce任务
MapReduce参数设置
启动、停止MapReduce服务
如何查看MapReduce日志
查看MapReduce Web控制台
集群规划
系统及硬件推荐配置
集群性能评估
集群维护与管理
查看集群状态
模拟集群失效
添加删除节点
数据平衡
元数据备份
文件数据跨集群拷贝
集群升级
Ganglia(运维工具)
Ganglia简介
Ganglia与Hadoop的集成
Hadoop中可监控的项目介绍
Hadoop作为大数据存储及计算领域的一颗明星,目前已经得到越来越广泛的应用。下面主要分析了Hadoop的一些典型应用场景,并对其进行了深入分析,主要包括下面几个方面:
日志处理: Hadoop擅长这个
并行计算
ETL: 每个人几乎都在做ETL(Extract-Transform-Load)工作 Netezza关于使用Hadoop做ETL任务的看法)
使用HBase做数据分析: 用扩展性应对大量的写操作—Facebook构建了基于HBase的实时数据分析系统
机器学习: 比如Apache Mahout项目
Hadoop是什么?
是google的核心算法MapReduce的一个开源实现。用于海量数据的并行处理。 hadoop的核心主要包含:HDFS和MapReduce, HDFS是分布式文件系统,用于分布式存储海量数据。 MapReduce是分布式数据处理模型,本质是并行处理。
多少数据算海量数据?
个人认为,TB(1024GB)级别往上就可以算海量数据。
谁在使用hadoop?
N多大型互联网公司,这里列的比较全:
http://wiki.apache.org/hadoop/PoweredBy
在国内,包括中国移动、百度、网易、淘宝、腾讯、金山和华为等众多公司都在研究和使用它
用它来做什么?
海量数据处理。。。似乎有点虚,用hadoop的地方:
1、最简单的,做个数据备份/文件归档的地方,这利用了hadoop海量数据的存储能力
2、数据仓库/数据挖掘:分析web日志,分析用户的行为(如:用户使用搜索时,在搜索结果中点击第2页的概率有多大)
3、搜索引擎:设计hadoop的初衷,就是为了快速建立索引。
4、云计算:据说,中国移动的大云,就是基于hadoop的
5、研究:hadoop的本质就是分布式计算,又是开源的。有很多思想值得借鉴。
hadoop是什么?hadoop能做什么?怎么用hadoop?
hadoop是什么?
Hadoop是一个开源的框架,可编写和运行分不是应用处理大规模数据,是专为离线和大规模数据分析而设计的,并不适合那种对几个记录随机读写的在线事务处理模式。Hadoop=HDFS(文件系统,数据存储技术相关)+ Mapreduce(数据处理),Hadoop的数据来源可以是任何形式,在处理半结构化和非结构化数据上与关系型数据库相比有更好的性能,具有更灵活的处理能力,不管任何数据形式最终会转化为key/value,key/value是基本数据单元。用函数式变成Mapreduce代替SQL,SQL是查询语句,而Mapreduce则是使用脚本和代码,而对于适用于关系型数据库,习惯SQL的Hadoop有开源工具hive代替。
hadoop能做什么?
hadoop擅长日志分析,facebook就用Hive来进行日志分析,2009年时facebook就有非编程人员的30%的人使用HiveQL进行数据分析;淘宝搜索中的自定义筛选也使用的Hive;利用Pig还可以做高级的数据处理,包括Twitter、LinkedIn 上用于发现您可能认识的人,可以实现类似Amazon.com的协同过滤的推荐效果。淘宝的商品推荐也是!在Yahoo!的40%的Hadoop作业是用pig运行的,包括垃圾邮件的识别和过滤,还有用户特征建模。(2012年8月25新更新,天猫的推荐系统是hive,少量尝试mahout!)
hadoop能为我司做什么?
零数据基础,零数据平台,一切起点都是0。
日志处理
用户细分特征建模
个性化广告推荐
智能仪器推荐
一切以增加企业的商业价值为核心目的、最终目的
4.怎么用hadoop?
hadoop的应用的在我司还属于研发型项目,拟用日志的分析来走通一次流程,因为此阶段目前来说还不需要数据挖掘的专业人员,在数据分析阶段即可,而系统有数据库工程师,Mapreduce有java开发工程师,而分析由我本人介入,而可视化暂时可由前端JS实现,本来我的调研方案,针对大数据的解决方案是hadoop+R的,但是对于R我们是完全不懂,在公司还没有大量投入人员的情况下,只有日志分析目前看来是最容易出成果的,也是可以通过较少人员能出一定成果的,所以选取了这个方向作为试点。
首先要进行数据的存储,一是要协调上游的服务厂商,关于日志的抓取,二是hadoop系统的搭建,目前已经在紧张的筹备中了。
http://blog.sina.com.cn/s/blog_687194cd01017lgu.html
对于想自学Hadoop,提供学习的路线图:
Hadoop概述
什么是Hadoop
为什么需要Hadoop
Hadoop的诞生和成长
Hadoop的特点和生态系统
HDFS和MapReduce
什么是HDFS,以及HDFS的设计目标
HDFS基本组件和架构
什么是MapReduce,以及MapReduce的架构
MapReduce基本服务和流程
Hadoop集群规划概要,以及软硬件的选择
目前,大量企业拥有海量的客户信息,包括在线交易记录及社交媒体数据等。但是,成功的关键是要能够从不同渠道和来源的数据中洞察价值,而具备收集并分析这些数据能力的企业将在竞争中拥有显著优势。
但是,数据的非结构化已经成为企业的重大挑战。企业已经熟悉收集和分析结构化数据,如传统的销售年报信息。目前,许多企业都困惑于如何收集和分 析更多类型的多结构化数据,如网络日志、无线电射频识别(RFID)、传感器网络、社交网络、互联网文本和文件、互联网搜索索引、详细通话记录、医疗记 录、摄影档案、视频档案以及电子商务交易数据等。
由于这些数据的结构问题及大数据类型的复杂关联,导致无法应用现有的传统技巧进行大数据分析。这为企业带来了新的任务,需要开发一套全新方法,不仅能够处理传统数据,而且可以便捷地分析和应用这些新兴数据,而不是仅仅进行储存。
迷思一:大数据是针对数据量和数据增长量而言
这种说法并不完全正确。的确,大数据包括海量的以指数速度增长的传统业务数据,也包括web应用、传感器网络、社交网络、基因组、视频、照片等新渠道生成的各种数据。同时,大数据还很复杂,进行收集、储存、管理和分析的难度极大。
目前,两种类型的数据都在不断增长。据IDC集团出版的《2011年十大预测》报告称:“企业正被淹没在信息海洋里,却仍渴望获得更多信息,这 也为大数据分析和管理带来了巨大机遇。”该报告指出,企业的愿望终将实现。“全球数据总量(digital universe)将扩张近50%,达到约1.8 泽它字节(约合2万亿Gb)。作为参考,专家们预计1泽它字节相当于长度高达3600万年高清视频文件产生的数据量。”
迷思二:企业应淘汰并更换现有分析系统以应对大数据时代到来
错误,没有必要!建立大数据分析能力需要人才、流程和技术的完美组合。如果企业尚未发掘现有商业智能环境的价值,在启用大数据分析平台前需率先 解决该问题。当传统业务数据分析被赋予大数据的视野,才能实现大数据分析的真正价值,带来透明和全面的业务观点,从而创造出业务迅猛发展的机会。
首先,企业应制定计划,明确应用大数据分析要达成的业务目标。依据这些目标,企业应部署适用的硬件和软件以应对挑战。根据一线员工的需求部署商 业智能解决方案,帮助他们做出最佳决策。在采用正确的技术支持后,企业用户和数据科学家能够迅速收集和分析新的数据源,发掘业务需要的洞察力。
迷思三:大数据只对谷歌、Facebook和亚马逊这样的高科技公司才有意义
无论是互联网公司、财富500强、或者小型企业,都与大数据的爆炸式增长息息相关。无论所在行业或企业规模,数据分析已经成为当前重要的业务需 求。现今,在企业运营中若无法从业务数据中获得真正的洞察,是绝不可行。全球主要市场的企业正在实现新一代高级分析应用的转型,通过全新方式应用海量的传 统数据和新型数据,提供更深入、更智慧的洞察力。而且,企业的竞争优势取决于在商业环境中管理和分析所有关键数据的能力,以及帮助企业做出最佳决策的洞察 力。
迷思四:数据科学家和大数据分析是2012年的IT界时尚
大数据分析绝非一时狂热,这点毋庸置疑。正如O’Reilly Media创始人Tim O’Reilly所言:“我们正在开创迷人的数据驱动应用新世界,这是一个任由我们塑造的世界。”目前,数据科学家已经成为独立的职业,奋战在塑造这 个商业新世界的最前线,精通数据的专家将成为新时代中的重要成员。
数据科学家必须对数据充满好奇,拥有专心钻研的态度,积极进取并善于批判性思考。他们具有对业务流程的深刻理解,同时融合数学、统计学,以及使用Excel、SQL和分析工作台等技能。目前,市场对拥有技术能力及商业意识的专业人才需求量巨大。
迷思五:大数据的价值取决于Hadoop及同类软件的技术处理能力
没有任何单一技术能够满足所有需求。根据企业努力解决的业务问题,建立大数据分析能力需要人才、流程和各种技术的完美组合,而最关键的是释放这些数据的商业价值。这将需要复杂的分析应用,其中包括数字营销优化、欺诈侦测和预防,以及和社交网络分析等。
Hadoop在大数据技术库中拥有一定价值及重要位置。Hadoop既是框架,更是实现多结构数据过滤、转化及整合的优异平台,类似于未搭载引擎或车身的跑车底盘。采用这种架构,Hadoop可以支持迭代及实时数据探索和分析,快速发现新数据及数据的变化模式。
成功的关键
成功的关键在于能够整合企业既有传统业务数据和新型数据。通过开放访问整个企业生态系统并整合各种来源的数据,企业可以应用大数据分析对客户进行超级全面的分析,进一步改善客户服务和销售业绩。