hadoop高级编程
⑴ 用通俗易懂的话说下hadoop是什么,能做
hadoop是什么?
(1)Hadoop是一个开源的框架,可编写和运行分布式应用处理大规模数据,是专为离线和大规模数据分析而设计的,并不适合那种对几个记录随机读写的在线事务处理模式。Hadoop=HDFS(文件系统,数据存储技术相关)+ Maprece(数据处理),Hadoop的数据来源可以是任何形式,在处理半结构化和非结构化数据上与关系型数据库相比有更好的性能,具有更灵活的处理能力,不管任何数据形式最终会转化为key/value,key/value是基本数据单元。用函数式变成Maprece代替sql,SQL是查询语句,而Maprece则是使用脚本和代码,而对于适用于关系型数据库,习惯SQL的Hadoop有开源工具hive代替。
(2)Hadoop就是一个分布式计算的解决方案.
hadoop能做什么?
hadoop擅长日志分析,2009年时非编程人员的30%的人使用HiveQL进行数据分析;自定义筛选也使用的Hive;利用Pig还可以做高级的数据处理,的40%的Hadoop作业是用pig运行的,包括垃圾邮件的识别和过滤,还有用户特征建模。
⑵ 大数据学什么语言
1、Python语言
十多年来,Python在学术界当中一直很流行,尤其是在自然语言处理(NLP)等领域。因而,如果你有一个需要NLP处理的项目,就会面临数量多得让人眼花缭乱的选择,包括经典的NTLK、使用GenSim的主题建模,或者超快、准确的spaCy。同样,说到神经网络,Python同样游刃有余,有Theano和Tensorflow;随后还有面向机器学习的scikit-learn,以及面向数据分析的NumPy和Pandas。
还有Juypter/iPython――这种基于Web的笔记本服务器框架让你可以使用一种可共享的日志格式,将代码、图形以及几乎任何对象混合起来。这一直是Python的杀手级功能之一,不过这年头,这个概念证明大有用途,以至于出现在了奉行读取-读取-输出-循环(REPL)概念的几乎所有语言上,包括Scala和R。
Python往往在大数据处理框架中得到支持,但与此同时,它往往又不是“一等公民”。比如说,Spark中的新功能几乎总是出现在Scala/java绑定的首位,可能需要用PySpark编写面向那些更新版的几个次要版本(对Spark Streaming/MLLib方面的开发工具而言尤为如此)。
与R相反,Python是一种传统的面向对象语言,所以大多数开发人员用起来会相当得心应手,而初次接触R或Scala会让人心生畏惧。一个小问题就是你的代码中需要留出正确的空白处。这将人员分成两大阵营,一派觉得“这非常有助于确保可读性”,另一派则认为,我们应该不需要就因为一行代码有个字符不在适当的位置,就要迫使解释器让程序运行起来。
2、R语言
在过去的几年时间中,R语言已经成为了数据科学的宠儿——数据科学现在不仅仅在书呆子一样的统计学家中人尽皆知,而且也为华尔街交易员,生物学家,和硅谷开发者所家喻户晓。各种行业的公司,例如Google,Facebook,美国银行,以及纽约时报都使用R语言,R语言正在商业用途上持续蔓延和扩散。
R语言有着简单而明显的吸引力。使用R语言,只需要短短的几行代码,你就可以在复杂的数据集中筛选,通过先进的建模函数处理数据,以及创建平整的图形来代表数字。它被比喻为是Excel的一个极度活跃版本。
R语言最伟大的资本是已围绕它开发的充满活力的生态系统:R语言社区总是在不断地添加新的软件包和功能到它已经相当丰富的功能集中。据估计,超过200万的人使用R语言,并且最近的一次投票表明,R语言是迄今为止在科学数据中最流行的语言,被61%的受访者使用(其次是Python,39%)。
3、JAVA
Java,以及基于Java的框架,被发现俨然成为了硅谷最大的那些高科技公司的骨骼支架。 “如果你去看Twitter,LinkedIn和Facebook,那么你会发现,Java是它们所有数据工程基础设施的基础语言,”Driscoll说。
Java不能提供R和Python同样质量的可视化,并且它并非统计建模的最佳选择。但是,如果你移动到过去的原型制作并需要建立大型系统,那么Java往往是你的最佳选择。
⑶ hadoop课程设计
1. 大数据专业课程有哪些
首先我们要了解Java语言和linux操作系统,这两个是学习大数据的基础,学习的顺序不分前后。
Java :只要了解一些基础即可,做大数据不需要很深的Java 技术,学java SE 就相当于有学习大数据。基础
Linux:因为大数据相关软件都是在Linux上运行的,所以Linux要学习的扎实一些,学好Linux对你快速掌握大数据相关技术会有很大的帮助,能让你更好的理解hadoop、hive、hbase、spark等大数据软件的运行环境和网络环境配置,能少踩很多坑,学会shell就能看懂脚本这样能更容易理解和配置大数据集群。还能让你对以后新出的大数据技术学习起来更快。
好说完基础了,再说说还需要学习哪些大数据技术,可以按我写的顺序学下去。
Hadoop:这是现在流行的大数据处理平台几乎已经成为大数据的代名词,所以这个是必学的。Hadoop里面包括几个组件HDFS、MapRece和YARN,HDFS是存储数据的地方就像我们电脑的硬盘一样文件都存储在这个上面,MapRece是对数据进行处理计算的,它有个特点就是不管多大的数据只要给它时间它就能把数据跑完,但是时间可能不是很快所以它叫数据的批处理。
记住学到这里可以作为你学大数据的一个节点。
Zookeeper:这是个万金油,安装Hadoop的HA的时候就会用到它,以后的Hbase也会用到它。它一般用来存放一些相互协作的信息,这些信息比较小一般不会超过1M,都是使用它的软件对它有依赖,对于我们个人来讲只需要把它安装正确,让它正常的run起来就可以了。
Mysql:我们学习完大数据的处理了,接下来学习学习小数据的处理工具mysql数据库,因为一会装hive的时候要用到,mysql需要掌握到什么层度那?你能在Linux上把它安装好,运行起来,会配置简单的权限,修改root的密码,创建数据库。这里主要的是学习SQL的语法,因为hive的语法和这个非常相似。
Sqoop:这个是用于把Mysql里的数据导入到Hadoop里的。当然你也可以不用这个,直接把Mysql数据表导出成文件再放到HDFS上也是一样的,当然生产环境中使用要注意Mysql的压力。
Hive:这个东西对于会SQL语法的来说就是神器,它能让你处理大数据变的很简单,不会再费劲的编写MapRece程序。有的人说Pig那?它和Pig差不多掌握一个就可以了。
Oozie:既然学会Hive了,我相信你一定需要这个东西,它可以帮你管理你的Hive或者MapRece、Spark脚本,还能检查你的程序是否执行正确,出错了给你发报警并能帮你重试程序,最重要的是还能帮你配置任务的依赖关系。我相信你一定会喜欢上它的,不然你看着那一大堆脚本,和密密麻麻的crond是不是有种想屎的感觉。
Hbase:这是Hadoop生态体系中的NOSQL数据库,他的数据是按照key和value的形式存储的并且key是唯一的,所以它能用来做数据的排重,它与MYSQL相比能存储的数据量大很多。所以他常被用于大数据处理完成之后的存储目的地。
Kafka:这是个比较好用的队列工具,队列是干吗的?排队买票你知道不?数据多了同样也需要排队处理,这样与你协作的其它同学不会叫起来,你干吗给我这么多的数据(比如好几百G的文件)我怎么处理得过来,你别怪他因为他不是搞大数据的,你可以跟他讲我把数据放在队列里你使用的时候一个个拿,这样他就不在抱怨了马上灰流流的去优化他的程序去了,因为处理不过来就是他的事情。而不是你给的问题。当然我们也可以利用这个工具来做线上实时数据的入库或入HDFS,这时你可以与一个叫Flume的工具配合使用,它是专门用来提供对数据进行简单处理,并写到各种数据接受方(比如Kafka)的。
Spark:它是用来弥补基于MapRece处理数据速度上的缺点,它的特点是把数据装载到内存中计算而不是去读慢的要死进化还特别慢的硬盘。特别适合做迭代运算,所以算法流们特别稀饭它。它是用scala编写的。Java语言或者Scala都可以操作它,因为它们都是用JVM的。
2. hadoop视频教程下载
其实这个课程讲的“微博”项目是《HBase in action》中的例子。其中的源代码都放在 github 上面。
3. 请问哪位有《深入浅出Hadoop实战开发》的视频教程
Hadoop是什么,为什么要学习Hadoop?
Hadoop是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有着高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以流的形式访问(streaming access)文件系统中的数据。
Hadoop 是一个能够对大量数据进行分布式处理的软件框架。但是 Hadoop 是以一种可靠、高效、可伸缩的方式进行处理的。Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。Hadoop 还是可伸缩的,能够处理 PB 级数据。此外,Hadoop 依赖于社区服务器,因此它的成本比较低,任何人都可以使用。
Hadoop带有用Java 语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。本课程的讲解是采用linux平台进行模拟讲解,完全基于真实场景进行模拟现实
亮点一:技术点全面,体系完善
本课程在兼顾Hadoop课程知识体系完善的前提下,把实际开发中应用最多、最深、最实用的技术抽取出来,通过本课程,你将达到技术的新高点,进入云计算的美好世界。在技术方面你将彻底掌握基本的Hadoop集群;Hadoop HDFS原理;Hadoop HDFS基本的命令;Namenode的工作机制;HDFS基本配置管理;MapRece原理; HBase的系统架构;HBase的表结构;HBase如何使用MapRece;MapRece高级编程;split的实现详解;Hive入门;Hive结合MapRece;Hadoop的集群安装等众多知识点。
亮点二:基础+实战=应用,兼顾学与练
课程每阶段都安排了实战应用项目,以此方便学生能更快的掌握知识点的应用,如在第一阶段,课程结合HDFS应用,讲解了图片服务器的设计、以及如何利用Java API去对HDFS操作、在第二阶段;课程结合HBase实现微博项目的各种功能,使学员可以活学活用。在第三阶段:HBase和MapRece结合时下了实现话单查询与统计系统,在第四阶段,Hive实战部分,通过实战数据统计系统,使学员在最短的时间内掌握Hive的高级应用。
亮点三:讲师丰富的电信集团云平台运作经验
讲师robby拥有丰富的电信集团工作经验,目前负责云平台的各方面工作,并拥有多年的企业内部培训经验。讲课内容完全贴近企业需求,绝不纸上谈兵。
更多技术亮点参考课程大纲:(本大纲以章节形式命名要为防止某些章节1章节内容超过1课时)
第1章节:
> Hadoop背景
> HDFS设计目标
> HDFS不适合的场景
> HDFS架构详尽分析
> MapRece的基本原理
第2章节
> Hadoop的版本介绍
> 安装单机版Hadoop
> 安装Hadoop集群
第3章节
> HDFS命令行基本操作
> Namenode的工作机制
> HDFS基本配置管理
第4章节
> HDFS应用实战:图片服务器(1) - 系统设计
> 应用的环境搭建 php + bootstrap + java
> 使用Hadoop Java API实现向HDFS写入文件
第5章节
> HDFS应用实战:图片服务器(2)
> 使用Hadoop Java API实现读取HDFS中的文件
> 使用Hadoop Java API实现获取HDFS目录列表
> 使用Hadoop Java API实现删除HDFS中的文件
第6章节
> MapRece的基本原理
> MapRece的运行过程
> 搭建MapRece的java开发环境
> 使用MapRece的java接口实现WordCount
第7章节
> WordCount运算过程分析
> MapRece的biner
> 使用MapRece实现数据去重
> 使用MapRece实现数据排序
> 使用MapRece实现数据平均成绩计算
第8章节
> HBase详细介绍
> HBase的系统架构
> HBase的表结构,RowKey,列族和时间戳
> HBase中的Master,Region以及Region Server
第9章节
> 使用HBase实现微博应用(1)
> 用户注册,登陆和注销的设计
> 搭建环境 struts2 + jsp + bootstrap + jquery + HBase Java API
> HBase和用户相关的表结构设计
> 用户注册的实现
第10章节
> 使用HBase实现微博应用(2)
> 使用session实现用户登录和注销
> “关注"功能的设计
> “关注"功能的表结构设计
> “关注"功能的实现
第11章节
> 使用HBase实现微博应用(3)
> “发微博"功能的设计
> “发微博"功能的表结构设计
> “发微博"功能的实现
> 展现整个应用的运行
第12章节
> HBase与MapRece介绍
> HBase如何使用MapRece
第13章节
> HBase应用实战:话单查询与统计(1)
> 应用的整体设计
> 开发环境搭建
> 表结构设计
第14章节
> HBase应用实战:话单查询与统计(2)
> 话单入库单设计与实现
> 话单查询的设计与实现
第15章节
> HBase应用实战:话单查询与统计(3)
> 统计功能设计
> 统计功能实现
第16章节
> 深入MapRece(1)
> split的实现详解
> 自定义输入的实现
> 实例讲解
第17章节
> 深入MapRece(2)
> Rece的partition
> 实例讲解
第18章节
> Hive入门
> 安装Hive
> 使用Hive向HDFS存入结构化数据
> Hive的基本使用
第19章节
> 使用MySql作为Hive的元数据库
> Hive结合MapRece
第20章节
> Hive应用实战:数据统计(1)
> 应用设计,表结构设计
第21章节
> Hive应用实战:数据统计(2)
> 数据录入与统计的实现
4. 哪个课程题库有hadoop的题
这是在一个平衡Hadoop集群中,为数据节点/任务追踪器提供的规格:
在一个磁盘阵列中要有12到24个1~4TB硬盘
2个频率为2~2.5GHz的四核、六核或八核CPU
64~512GB的内存
有保障的千兆或万兆以太网(存储密度越大,需要的网络吞吐量越高)
名字节点角色负责协调集群上的数据存储,作业追踪器协调数据处理(备用的名字节点不应与集群中的名字节点共存,并且运行在与之相同的硬件环境上。)。Cloudera客户购买在RAID1或10配置上有足够功率和级磁盘数的商用机器来运行名字节点和作业追踪器。
NameNode也会直接需要与群集中的数据块的数量成比列的RAM。一个好的但不精确的规则是对于存储在分布式文件系统里面的每一个1百万的数据块,分配1GB的NameNode内存。于在一个群集里面的100个DataNodes而言,NameNode上的64GB的RAM提供了足够的空间来保证群集的增长。我们也把HA同时配置在NameNode和JobTracker上,
这里就是为NameNode/JobTracker/Standby NameNode节点群的技术细节。驱动器的数量或多或少,将取决于冗余数量的需要。
4–6 1TB 硬盘驱动器 采用 一个 JBOD 配置 (1个用于OS, 2个用于文件系统映像[RAID 1], 1个用于Apache ZooKeeper, 1个用于Journal节点)
2 4-/16-/8-核心 CPUs, 至少运行于 2-2.5GHz
64-128GB 随机存储器
Bonded Gigabit 以太网卡 or 10Gigabit 以太网卡
记住, 在思想上,Hadoop 体系设计为用于一种并行环境。
5. 大数据的课程都有哪些
大数据本身属于交叉学科,涵盖计算机、统计学、数学三个学科的专业知识。所以大数据的课程内容,基本上也是围绕着三个学科展开的。
数理统计方面:数学分析、统计学习、高等代数、离散数学、概率与统计等课程是基本配置。
计算机专业课程:数据结构、数据科学、程序设计、算法分析与设计、数据计算智能、数据库系统、计算机系统基础、并行体系结构与编程、非结构化大数据分析等,也是必备课程。
而想要真正找到工作的话,大数据主流技术框架,也要去补充起来,这才是找工作当中能够获得竞争力的加分项。
6. hadoop 集群教程
要教程?不明白你这个啥意思
7. 有哪些好的hadoop学习资料
1."Hadoop.Operations.pdf.zip"//vdisk.weibo/s/vDOQs6xMAQH62
2."Hadoop权威指南(中文版)(带书签).pdf"Hadoop权威指南(中文版)(带书签).pdf
3."[Hadoop权威指南(第2版)].pdf"[Hadoop权威指南(第2版)].pdf
4."hadoop权威指南第3版2012.rar"hadoop权威指南第3版2012.rar
5.《Hadoop技术内幕:深入解析HadoopCommon和HDFS.pdf"《Hadoop技术内幕:深入解析Hadoop Common和HDFS.pdf
6."Hadoop技术内幕:深入解析MapRece架构设计与实现原理.pdf"Hadoop技术内幕:深入解析MapRece架构设计与实现原理.pdf
7."Hadoop实战.pdf"Hadoop实战.pdf
8."Hadoop实战-陆嘉恒(高清完整版).pdf"Hadoop实战-陆嘉恒(高清完整版).pdf
9."Hadoop实战(第2版).pdf"Hadoop实战(第2版).pdf
10."HadoopinAction.pdf"Hadoop in Action.pdf
11"Hadoop in practice.pdf"Hadoop in practice.pdf
12"HadoopThe.Definitive.Guide,3Ed.pdf"Hadoop The.Definitive.Guide,3Ed.pdf
13."O'Reilly.Hadoop.The.Definitive.Guide.3rd.Edition.May.2012.pdf"O'Reilly.Hadoop.The.Definitive.Guide.3rd.Edition.May.2012.pdf
14."hadoop入门实战手册.pdf"hadoop入门实战手册.pdf
15."Hadoop入门手册.chm"Hadoop入门手册.chm
16."windows下配置cygwin、hadoop等并运行maprece及maprece程序讲解.doc"windows下配置cygwin、hadoop等并运行maprece及maprece程序讲解.doc
17"在Windows上安装Hadoop教程.pdf"在Windows上安装Hadoop教程.pdf
18."Hadoop源代码分析(完整版).pdf"Hadoop源代码分析(完整版).pdf
19."hadoop-api.CHM"hadoop-api.CHM
20."HBase-Hadoop@小米.pptx" HBase-Hadoop@小米.pptx
21."但彬-Hadoop平台的大数据整合.pdf"但彬-Hadoop平台的大数据整合.pdf
22."QCon2013-罗李-Hadoop在阿里.pdf"QCon2013-罗李
23."网络hadoop计算技术发展.pdf"网络hadoop计算技术发展.pdf
24."QCon-吴威-基于Hadoop的海量数据平台.pdf"QCon-吴威-基于Hadoop的海量数据平台.pdf
25."8步安装好你的hadoop.docx"8步安装好你的hadoop.docx
26."hadoop运维经验分享.ppsx"hadoop运维经验分享.ppsx
27."PPT集萃:20位Hadoop专家分享大数据技术工具与最佳实践.rar"PPT集萃:20位Hadoop专家分享大数据技术工具与最佳实践.rar
28."Hadoop2.0基本架构和发展趋势.pdf"Hadoop 2.0基本架构和发展趋势.pdf
29."Hadoop与大数据技术大会PPT资料.rar"Hadoop与大数据技术大会PPT资料.rar
30."Hadoop2011云计算大会.rar"Hadoop2011云计算大会.rar
⑷ 大数据学习,为什么要先学习java
学大数据部分之前要先学习一种计算机编程语言。【大数据开发】需要编程语言的基础,因为大数据的开发基于一些常用的高级语言,比如Java和.Net。不论是hadoop,还是数据挖掘,都需要有高级编程语言的基础。因此,如果想学习大数据开发,还是需要至少精通一门高级语言。
java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。如果对java有一定的了解,就更应该清楚java是一个强类型编程语言,拥有极高的跨平台能力,还有就是java的异常处理能够保证系统的稳定性。目前,【java语言】的应用也是很广泛,对于学习大数据的人而言是很多人的选择,hadoop及其它大数据处理技术都用到了java,像Apache的基于Java的HBase和Accumulo以及ElasticSearchas等。所以想要进入大数据领域的小伙伴,大部分都会选择从java编程语言开始学起。感兴趣的话点击此处,免费学习一下
想了解更多有关大数据的相关信息,推荐咨询【达内教育】。该机构致力于面向IT互联网行业,培养软件开发工程师、测试工程师、UI设计师、网络营销工程师、会计等职场人才,拥有行业内完善的教研团队,强大的师资力量,确保学员利益,全方位保障学员学习;更是与多家企业签订人才培养协议,全面助力学员更好就业。达内IT培训机构,试听名额限时抢购。
⑸ 大数据需要学习java吗
学习大数据一定要学习编程语言,因为不论是从事大数据开发岗位,还是从事大数据分析岗位和大数据运维岗位,编程语言都是非常重要的工具,但是不同岗位对于编程语言的要求是不同的,比如当前从事大数据开发岗位,那么可以重点学习一下Java,而从事大数据分析岗位和大数据运维岗位,学习Python则是不错的选择。
Java除了是大数据开发、大数据分析的必备基础知识,还可以适用于其他的技术领域。而且Java的语言特点,是学习大数据的基础
⑹ Hadoop常见问题解答
Hadoop常见问题解答
(1)Hadoop适不适用于电子政务?为什么?
电子政务是利用互联网技术实现政府组织结构和工作流程的重组优化,建成一个精简、高效、廉洁、公平的政府运作信息服务平台。因此电子政务肯定会产生相关的大量数据以及相应的计算需求,而这两种需求涉及的数据和计算达到一定规模时传统的系统架构将不能满足,就需要借助海量数据处理平台,例如Hadoop技术,因此可以利用Hadoop技术来构建电子政务云平台。
总结一下,任何系统没有绝对的适合和不适合,只有当需求出现时才可以决定,在一个非常小的电子政务系统上如果没有打数据处理以及计算分析需求时就不需要hadoop这样的技术,而实际上,商用的电子政务平台往往涉及到大规模的数据和大量的计算分析处理需求,因此就需要Hadoop这样的技术来解决。(2)hadoop对于实时在线处理有优势吗?
直接使用hadoop进行实时处理时没有优势的,因为Hadoop主要解决的是海量批处理作业计算问题,但是可以使用基于Hadoop的分布式NOSQL系统HBase系统以及相关实时处理系统:
1. 基于Hadoop的HBase可以做到实时处理以及相关需求的实时计算,主要解决海量<key,value>相关查询计算等需求。
2. 可以考虑Spark计算,Spark是基于共现内存RDD的系统,比Hadoop更快,时候迭代式计算,例如数据挖掘,机器学习算法等。
3. 还有Storm,Storm是一个免费开源、分布式、高容错的实时计算系统,Storm经常用于在实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域。
4. 考虑S4, S4是Yahoo!在2010年10月开源的一套通用、分布式、可扩展、部分容错、具备可插拔功能的平台。这套平台主要是为了方便开发者开发处理流式数据(continuous unbounded streams of data)的应用。
你可以依据实际的需求来选择合适的系统。
(3)Hadoop存储海量数据没有问题,但是如何能够做到海量数据的实时检索?
1,可以结合开源的搜索引擎Apache Lucene,Solr 或ElasticSearch
2,海量数据的实时检索可以考虑HBase,建议可以使用hadoop将数据构建成以查询key为键的数据集,然后将<key, value>集合写入Hbase表中,Hbase会自动以key为键进行索引,在数十亿甚至以上的级别下,查询key的value响应时间也估计再10毫秒内。
如果检索条件是多个组合的情况下,可以适当的设计多个hbase表格,这样的检索也是很快的,同时Hbase也是支持二级索引。在符合条件下查询,Hbase也是支持MapRece的,如果对响应时间要求不高的情况下,可以考虑将hive和Hbase系统结合来使用。
如果数据量不是很大的情况下也可以考虑支持类似SQL的NOSLQ系统。
(4)能不能给点hadoop的学习方法以及学习规划,hadoop系统有点庞大,感觉无从学起?
首先搞清楚什么是hadoop以及hadoop可以用来做什么?
然后,可以从最经典的词频统计程序开始,初步了解MapRece的基本思路和处理数据的方式。
接着,就可以正式学习hadoop的基本原理,包括HDFS和MapRece,先从整体,宏观核心原理看,先别看源码级别。
进一步,就可以深入HDFS和MapRece和模块细节,这个时候可以结合源码深入理解,以及实现机制。
最后就是需要实战了,可以结合自己的项目或者相关需求来完成一些hadoop相关应用。
(5) 大的文件拆分成很多小的文件后,怎样用Hadoop进行高效的处理这些小文件?以及怎样让各个节点尽可能的负载均衡?
1. 怎样用Hadoop进行高效的处理这些小文件?
你这个问题提的很好,hadoop在处理大规模数据时是很高效的,但是处理大量的小文件时就会因为系统资源开销过大而导致效率较低,针对这样的问题,可以将小文件打包为大文件,例如使用SequcenFile文件格式,例如以文件签名为key,文件内容本身为value写成SequcenFile文件的一条记录,这样多个小文件就可以通过SequcenFile文件格式变为一个大文件,之前的每个小文件都会映射为SequcenFile文件的一条记录。
2. 怎样让各个节点尽可能的负载均衡?
在hadoop集群中负载均衡是非常关键的,这种情况的导致往往是因为用户的数据分布的并不均衡,而计算资源槽位数确实均衡分布在每个节点,这样在作业运行时非本地任务会有大量的数据传输,从而导致集群负载不均衡,因此解决不均衡的要点就是将用户的数据分布均衡,可以使用hadoop内置的balancer脚本命令。
对于因为资源调度导致的不均衡则需要考虑具体的调度算法和作业分配机制。
(6)c/c++ 程序员如何入门Hadoop到深入了解,并在Linux服务器上布置运用,有没有方向性的指导?
针对C/C++用户,Hadoop提供了hadoop streaming接口和pipes接口,hadoop streaming接口以标准输入和标准输出作为用户程序和hadoop框架交互的中间件,pipes这是专门针对C/C++语言的接口,以socket作为同学中介。
从使用上建议从streaming入手,pipes相比streaming问题比较多,而且pipes调试不容易。
(7)现在企业中使用Hadoop版本主要是1.x还是2.x?
目前网络,腾讯,阿里为主的互联网公司都是以hadoop 1.X为基准版本的,当然每个公司都会进行自定义的二次开发以满足不同的集群需求。
2.X在网络内部还没有正式使用,还是以1.X为主,不过网络针对1.X的问题开发了HCE系统(Hadoop C++ Expand系统)
补充,Hadoop2.x在其他公司应用的很多,比如京东
(8)以后想从事大数据方面工作,算法要掌握到什么程度,算法占主要部分吗?
首先,如果要从事大数据相关领域的话,hadoop是作为工具来使用的,首先需要掌握使用方法。可以不用深入到hadoop源码级别细节。
然后就是对算法的理解,往往需要设计到数据挖掘算法的分布式实现,而算法本身你还是需要理解的,例如常用的k-means聚类等。
(9)现在spark,storm越来越火,谷歌也发布了Cloud Dataflow,是不是Hadoop以后主要应该学习hdfs和yarn,而且以后Hadoop程序员的主要做的就是把这些东西打包,只提供接口让普通的程序员也能使用,就像Cloudera和Google一样?
这位同学,你多虑了,hadoop和spark, strom是解决不同的问题,不存在哪个好那个坏,要学习Hadoop还是以主流的hadoop-1.X为版本,2.X最主要的就是多了yarn框架,很好理解的。
如果你是hadoop本身研发建议都看,如果你是hadoop应用相关研发,看主流的1.X就行,我的书《Hadoop核心技术》是以主流的1.X为版本讲解的,有兴趣可以看看。
(10)小白问一句,大数据处理都是服务器上安装相关软件吗,对程序有什么影响呢,集群、大数据是属于运维的工作内容还是攻城狮的呢?
传统的程序只能运行在单机上,而大数据处理这往往使用分布式编程框架编写,例如hadoop maprece,只能运行在hadoop集群平台上。
运维的责任:保证集群,机器的稳定性和可靠性
hadoop系统本身研发:提高Hadoop集群的性能,增加新功能。
大数据应用:把hadoop作为工具,去实现海量数据处理或者相关需求。
(11)学习hadoop该怎么入手呢?应该做一些什么样的项目呢?
可以参考我上面的几个回答,可以从最简单词频统计程序入手,然后学习理解HDFS和MapRece的基本原理和核心机制,如果仅仅把Hadoop作为一个工具来使用的话这样就可以了,最重要的就是实战了,可以尝试使用Hadoop处理一些数据,例如做日志分析,数据统计,排序,倒排索引等典型应用。
(12)100个以上hadoop节点,一般怎么开发,运维?任务很多的情况下任务资源怎么分配,任务执行顺序是定时脚本还是别的什么方式控制?
1. 首先大数据的应用开发和hadoop集群的规模是没有关系,你指的是集群的搭建和运维吗,对于商用的hadoop系统来说涉及到很多东西,建议参考《hadoop核心技术》实战篇 “第10章Hadoop集群搭建 ” 章节。
2. 任务的分配是有hadoop的调度器的调度策略决定的,默认为FIFO调度,商业集群一般使用多队列多用户调度器,可以参考参考《hadoop核心技术》高级篇 “第9章Hadoop作业调度系统” 章节。
3. 任务的执行顺序是有用户控制的,你自然可以定时启动,也可以手动启动。
(13)基于Hadoop做开发,是否必须会使用Java,使用其他开发语言是否无法更好的融入整个Hadoop的开发体系?
基于Hadoop做开发可以使用任何语言,因为hadoop提高了streaming编程框架和pipes编程接口,streaming框架下用户可以使用任何可以操作标准输入输出的计算机语言来开发hadoop应用。
(14)在rece阶段老是卡在最后阶段很长时间,在网上查的说是有可能是数据倾斜,我想问这个有啥解决方法吗?
1,你这个就是数据倾斜啊 好多数据都集中在一个rece里 其他rece里分配的数据比较少 默认情况下决定哪些数据分配到哪个rece是由rece个数和partiiton分区决定的 默认是对key进行hash运算 一般情况下用mapreuce倾斜很少 除非你用的HIVE
2,rece分为3个子阶段:shuffle、sort和rece,如果rece整个过程耗时较长,建议先看一下监控界面是卡在哪个阶段,如果是卡在shuffle阶段往往是网络阻塞问题,还有就是某rece数据量太大,也就是你所说的数据倾斜问题,这种问题往往因为某个key的value太多,解决方法是:第一,默认的partiiton可能不适合你的需求,你可以自定义partiiton;第二就是在map端截断,尽量让达到每个rece端的数据分布均匀。
(15)非大数据的项目能否用hadoop?
非大数据项目是否可以用Hadoop的关键问题在于是否有海量数据的存储,计算,以及分析挖掘等需求,如果现有系统已经很好满足当前需求那么就没有必要使用Hadoop,没有必要使用并不意味这不能使用Hadoop,很多传统系统能做的Hadoop也是可以做的,例如使用HDFS来代替LINUX NFS,使用MapRece来代替单服务器的统计分析相关任务,使用Hbase代替Mysql等关系数据库等,在数据量不大的情况下通常Hadoop集群肯定比传统系统消耗更多的资源。
(16)hadoop maprece 和第三方资源管理调度系统如何集成?
Hadoop的调度器设计的一个原则就是可插拔式调度器框架,因此是很容易和第三方调度器集成的,例如公平调度器FairScheler和容量调度器CapacityScheler,并配置mapred-site.xml的maprece.jobtracker.taskscheler以及调度器本身的配置参数,例如公平调度器控制参数则需要编辑fair- scheler.xml进行配置,具体可以参考我的新书《Hadoop核心技术》实战篇第十章节10.11的集群搭建实例中的10.10.9 配置第三方调度器,同时可以进一步深入学习第9章 Hadoop作业调度系统,在这一章中会详细介绍各种第三方调度器以及使用配置方法。
⑺ 成为hadoop大数据分析师要学哪些课程
首先要学习基础的JAVA 然后研究hadoop以及相关的工具 框架 ,这些学习完应用开发基本没有什么问题了。
因为做的是大数据 还应该了解一些SQL知识, 大数据基本都是操作文件的,所以数据库相关的了解一下就可以了 。
⑻ hadoop,storm和spark的区别,比较
一、hadoop、Storm该选哪一个?
为了区别hadoop和Storm,该部分将回答如下问题:
1.hadoop、Storm各是什么运算
2.Storm为什么被称之为流式计算系统
3.hadoop适合什么场景,什么情况下使用hadoop
4.什么是吞吐量
首先整体认识:Hadoop是磁盘级计算,进行计算时,数据在磁盘上,需要读写磁盘;Storm是内存级计算,数据直接通过网络导入内存。读写内存比读写磁盘速度快n个数量级。根据Harvard CS61课件,磁盘访问延迟约为内存访问延迟的75000倍。所以Storm更快。
注释:
1. 延时 , 指数据从产生到运算产生结果的时间,“快”应该主要指这个。
2. 吞吐, 指系统单位时间处理的数据量。
storm的网络直传、内存计算,其时延必然比hadoop的通过hdfs传输低得多;当计算模型比较适合流式时,storm的流式处理,省去了批处理的收集数据的时间;因为storm是服务型的作业,也省去了作业调度的时延。所以从时延上来看,storm要快于hadoop。
从原理角度来讲:
Hadoop M/R基于HDFS,需要切分输入数据、产生中间数据文件、排序、数据压缩、多份复制等,效率较低。
Storm 基于ZeroMQ这个高性能的消息通讯库,不持久化数据。
为什么storm比hadoop快,下面举一个应用场景
说一个典型的场景,几千个日志生产方产生日志文件,需要进行一些ETL操作存入一个数据库。
假设利用hadoop,则需要先存入hdfs,按每一分钟切一个文件的粒度来算(这个粒度已经极端的细了,再小的话hdfs上会一堆小文件),hadoop开始计算时,1分钟已经过去了,然后再开始调度任务又花了一分钟,然后作业运行起来,假设机器特别多,几钞钟就算完了,然后写数据库假设也花了很少的时间,这样,从数据产生到最后可以使用已经过去了至少两分多钟。
而流式计算则是数据产生时,则有一个程序去一直监控日志的产生,产生一行就通过一个传输系统发给流式计算系统,然后流式计算系统直接处理,处理完之后直接写入数据库,每条数据从产生到写入数据库,在资源充足时可以在毫秒级别完成。
同时说一下另外一个场景:
如果一个大文件的wordcount,把它放到storm上进行流式的处理,等所有已有数据处理完才让storm输出结果,这时候,你再把它和hadoop比较快慢,这时,其实比较的不是时延,而是比较的吞吐了。
--------------------------------------------------------------------------------------------------------------------------------
最主要的方面:Hadoop使用磁盘作为中间交换的介质,而storm的数据是一直在内存中流转的。
两者面向的领域也不完全相同,一个是批量处理,基于任务调度的;另外一个是实时处理,基于流。
以水为例,Hadoop可以看作是纯净水,一桶桶地搬;而Storm是用水管,预先接好(Topology),然后打开水龙头,水就源源不断地流出来了。
--------------------------------------------------------------------------------------------------------------------------------
Storm的主工程师Nathan Marz表示: Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm之于实时处理,就好比Hadoop之于批处理。Storm保证每个消息都会得到处理,而且它很快——在一个小集群中,每秒可以处理数以百万计的消息。更棒的是你可以使用任意编程语言来做开发。
Storm的主要特点如下:
1.简单的编程模型。类似于MapRece降低了并行批处理复杂性,Storm降低了进行实时处理的复杂性。
2.可以使用各种编程语言。你可以在Storm之上使用各种编程语言。默认支持Clojure、Java、Ruby和Python。要增加对其他语言的支持,只需实现一个简单的Storm通信协议即可。
3.容错性。Storm会管理工作进程和节点的故障。
4.水平扩展。计算是在多个线程、进程和服务器之间并行进行的。
5.可靠的消息处理。Storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。
6.快速。系统的设计保证了消息能得到快速的处理,使用MQ作为其底层消息队列。
7.本地模式。Storm有一个“本地模式”,可以在处理过程中完全模拟Storm集群。这让你可以快速进行开发和单元测试。
--------------------------------------------------------------------------------------------------------------------------------
在消耗资源相同的情况下,一般来说storm的延时低于maprece。但是吞吐也低于maprece。storm是典型的流计算系统,maprece是典型的批处理系统。下面对流计算和批处理系统流程
这个个数据处理流程来说大致可以分三个阶段:
1. 数据采集与准备
2. 数据计算(涉及计算中的中间存储), 题主中的“那些方面决定”应该主要是指这个阶段处理方式。
3. 数据结果展现(反馈)
1)数据采集阶段,目前典型的处理处理策略:数据的产生系统一般出自页面打点和解析DB的log,流计算将数据采集中消息队列(比如kafaka,metaQ,timetunle)等。批处理系统一般将数据采集进分布式文件系统(比如HDFS),当然也有使用消息队列的。我们暂且把消息队列和文件系统称为预处理存储。二者在延时和吞吐上没太大区别,接下来从这个预处理存储进入到数据计算阶段有很大的区别,流计算一般在实时的读取消息队列进入流计算系统(storm)的数据进行运算,批处理一系统一般会攒一大批后批量导入到计算系统(hadoop),这里就有了延时的区别。
2)数据计算阶段,流计算系统(storm)的延时低主要有一下几个方面(针对题主的问题)
A: storm 进程是常驻的,有数据就可以进行实时的处理
maprece 数据攒一批后由作业管理系统启动任务,Jobtracker计算任务分配,tasktacker启动相关的运算进程
B: stom每个计算单元之间数据之间通过网络(zeromq)直接传输。
maprece map任务运算的结果要写入到HDFS,在于rece任务通过网络拖过去运算。相对来说多了磁盘读写,比较慢
C: 对于复杂运算
storm的运算模型直接支持DAG(有向无环图)
maprece 需要肯多个MR过程组成,有些map操作没有意义的
3)数据结果展现
流计算一般运算结果直接反馈到最终结果集中(展示页面,数据库,搜索引擎的索引)。而maprece一般需要整个运算结束后将结果批量导入到结果集中。
实际流计算和批处理系统没有本质的区别,像storm的trident也有批概念,而maprece可以将每次运算的数据集缩小(比如几分钟启动一次),facebook的puma就是基于hadoop做的流计算系统。
二、高性能并行计算引擎Storm和Spark比较
Spark基于这样的理念,当数据庞大时,把计算过程传递给数据要比把数据传递给计算过程要更富效率。每个节点存储(或缓存)它的数据集,然后任务被提交给节点。
所以这是把过程传递给数据。这和Hadoop map/rece非常相似,除了积极使用内存来避免I/O操作,以使得迭代算法(前一步计算输出是下一步计算的输入)性能更高。
Shark只是一个基于Spark的查询引擎(支持ad-hoc临时性的分析查询)
而Storm的架构和Spark截然相反。Storm是一个分布式流计算引擎。每个节点实现一个基本的计算过程,而数据项在互相连接的网络节点中流进流出。和Spark相反,这个是把数据传递给过程。
两个框架都用于处理大量数据的并行计算。
Storm在动态处理大量生成的“小数据块”上要更好(比如在Twitter数据流上实时计算一些汇聚功能或分析)。
Spark工作于现有的数据全集(如Hadoop数据)已经被导入Spark集群,Spark基于in-memory管理可以进行快讯扫描,并最小化迭代算法的全局I/O操作。
不过Spark流模块(Streaming Mole)倒是和Storm相类似(都是流计算引擎),尽管并非完全一样。
Spark流模块先汇聚批量数据然后进行数据块分发(视作不可变数据进行处理),而Storm是只要接收到数据就实时处理并分发。
不确定哪种方式在数据吞吐量上要具优势,不过Storm计算时间延迟要小。
总结下,Spark和Storm设计相反,而Spark Steaming才和Storm类似,前者有数据平滑窗口(sliding window),而后者需要自己去维护这个窗口。
⑼ 北大青鸟设计培训:Java和大数据该怎么选择呢
Java和大数据在IT行业中都是火爆的代名词,当下很多人都很好奇它们之间的关系,听说学大数据前还得先学Java,但是它们又属于不同的行业,Java和大数据究竟有着什么样的联系,Java和大数据哪个好就业呢?该怎么选择呢?诸多疑问,跟北大青鸟http://www.kmbdqn.cn/往下看,一起来破解疑问。
首先来了解下Java和大数据的关系?当下如果你选择学大数据,并且选择的是参加大数据培训的话,你会发现你首先接触的不是大数据,而是Java,大数据培训前期学的都是Java语言,Java和大数据联系是相当的紧密,那么学大数据前为什么要先学Java语言呢?你可知道原因。
Java是门高端的计算机编程语言,学大数据不论是hadoop,还是数据挖掘,都需要有高级编程语言的基础,而Hadoop以及其他大数据处理技术很多都是用Java,例如Apache的基于Java的HBase和Accumulo以及ElasticSearchas,因此学习Hadoop的一个首要条件,就是掌握Java语言编程。
了解了Java和大数据之间的关系,那么Java和大数据哪个好就业呢?其实当下Java和大数据都很火爆,就业前景都不错,当下是技术性人才时代,企业青睐有一技之长的朋友时,更加青睐具备混合技术的人才,你可以成为Java+大数据混合型人才,那么在就业当中更具备竞争力,薪资待遇自然也更好。
⑽ 在大数据学习中Hadoop和Spark哪个更好就业
大数据的hadoop和spark都是大数据开发所用到的一种开发软件工具,合格的大数据开发工程师需要掌握的技能很多,具体岗位(大数据开发,大数据分析,数据产品经理等)要求的重点不同。如需大数据培训推荐选择【达内教育】。
Hadoop与Spark都是大数据计算框架,但是两者各有自己的优势,Spark与Hadoop的区别主要有以下几点:
1、编程方式
Hadoop的MapRece在计算数据时,计算过程必须要转化为Map和Rece两个过程,从而难以描述复杂的数据处理过程;而Spark的计算模型不局限于Map和Rece操作,还提供了多种数据集的操作类型,编程模型比MapRece更加灵活。
2、数据存储
Hadoop的MapRece进行计算时,每次产生的中间结果都是存储在本地磁盘中;而Spark在计算时产生的中间结果存储在内存中。
3、数据处理
Hadoop在每次执行数据处理时,都需要从磁盘中加载数据,导致磁盘的I/O开销较大;而Spark在执行数据处理时,只需要将数据加载到内存中,之后直接在内存中加载中间结果数据集即可,减少了磁盘的1O开销等。感兴趣的话点击此处,免费学习一下
想了解更多有关大数据的相关信息,推荐咨询【达内教育】。该机构是引领行业的职业教育公司,致力于面向IT互联网行业培养人才,达内大型T专场招聘会每年定期举行,为学员搭建快捷高效的双选绿色通道,在提升学员的面试能力、积累面试经验同时也帮助不同技术方向的达内学员快速就业。达内IT培训机构,试听名额限时抢购。