-
-
程序人生 初学数据Lv2
发表于2018-11-29 11:04
楼主
本帖最后由 程序人生 于 2018-11-29 11:06 编辑
大数据是目前IT领域最炙手可热的技术,没有之一,它与很多新型技术都是相关的,如无人驾驶、人工智能、机器学习等。无论在国内还是国外,大数据人才的需求量很大,这无疑为IT从业人员提供了一个广阔的天地。
大数据主要应用于这样的场合:通过对大量数据进行分析,得出一个结论,提供一种建议,指导人们的行为。汽车导航、无人驾驶、天气预报、网页上的商品推荐、快递分拣与投递、机器人、股票走势预测等等,都是大数据应用的典型例子。
HADOOP
Hadoop是当下最流行的大数据运行平台,它属于Apache基金会,由很多相对独立的子项目(也叫做框架、模块或者组件)组成,它们是由Google、Facebook、Linkedin等互联网公司贡献的。这些框架组合在一起,共同完成大数据的存储和运算。看到这里,大家可能会问,同样是互联网公司,我国的百度在干什么?我不禁一声长叹,这就是差距,仿佛中国足球与欧洲南美足球之间的差距。
Hadoop的Logo是一只萌萌的小黄象。为什么不选小黄人、冰雪公主做Logo?Hadoop的创始人Doug Cutting说,没什么奇怪的,这个名称和Logo来源于他的孩子的一个玩具。
打开Apache的官网(www.apache.org),你会发现,Hadoop由很多框架组成,而且老的框架不断被淘汰,新的框架不断加入。看到这里,你的第一感觉是不是:学!不!过!来?学习大数据的这条路到底有多远?屈原告诉你:路漫漫其修远兮……这条路到底有多难?韩红的歌声告诉你:那是一条神奇的天路耶……
大数据的思想与传统关系型数据库完全不同,所以大家会感觉不好理解,不知道从哪里下手。实际上,大家没必要学习所有的框架,只要掌握了Hadoop的核心技术,以后在实际工作中,用到什么再去学习什么就可以了。
大数据需要解决两个最核心的问题:数据的存储及数据的计算,Hadoop有两个核心功能模块,用来分别解决这两个问题。HDFS(即Hadoop分布式文件系统)解决了数据的分布式存储问题,而Mapreduce解决了数据的分布式计算问题,它们是整个Hadoop运行平台的基础。当你安装Hadoop之后,HDFS和Mapreduce就可以使用了,其它功能模块都运行在它们之上,需要单独安装。这些模块共同组成了Hadoop的生态圈。下图展示了组成Hadoop生态圈的部分框架。

HADOOP学习路线
学习Hadoop,可以按照下面的路线进行:
1. HDFS:Hadoop的核心框架之一,提供数据的分布式存储,必学。
2. Mapreduce:Hadoop的核心框架之一,对数据进行分布式计算,必学。
3. Yarn:Hadoop版本2.x及之后的核心框架之一,为用户的任务分配资源,并进行任务调度,必学。
4. Zookeeper:分布式应用程序的协调器,为HDFS集群、Hbase集群、Yarn集群等提供底层支持,保证这些集群的高可用性,必学。
5. Hbase:Hadoop的数据库,用来存储非结构化的数据,可选,但一般都会用到。
6. sqoop:用来把传统关系型数据库中的数据传输到HDFS或者Hbase中,为大数据提供源数据。Hadoop本身是不产生数据的,它的数据主要来自传统的关系型数据库。
7. Spark:对数据进行分布式计算,运算速度可提高100倍,大有代替Mapreduce的趋势,其重要性不言而喻。
8. Storm:对数据进行流式计算,可选。目前对实时数据流进行计算的需求越来越多,如汽车导航,通过对实时交通情况进行分析,为司机提供有价值的导航信息。
9. Hive:数据仓库分析工具,允许用户通过类似于SQL的语言对数据进行分析、计算,可选。
如果说上面这些框架为大数据的存储和计算提供了环境,那么数据的计算就要靠编写程序来完成。用户编写的程序只要符合Hadoop规范,就能在Hadoop中运行。
Hadoop是一个开放式平台,它支持众多的编程语言。目前主流的大数据编程语言当属Java、Python和Scala。相对而言,编程方面的学习似乎比大数据管理方面的学习更加重要,因为你不仅需要掌握编程语言的语法,更需要具有编程思想,即算法,也就是数据处理的思路。
JAVA
Java是大数据计算的万能钥匙,可以用在大数据环境的任何场合。实际上,Hadoop的很多框架就是用Java语言编写的。说起Java,大家可能会想到Jsp、Servelet、Tomcat、Weblogic等无穷无尽的东西,实际上,大数据中的Java与J2EE无关,大家只要掌握J2SE就可以了。也就是说,大数据中的Java开发,远比一般意义上的Java开发简单。尽管如此,Java繁琐的编程语法,低下的运行效率,以及运行出错时的大堆异常信息,是许多程序员的噩梦。所以说,Java是应用最广的、但是不大受欢迎的编程语言。
相比而言,Python和Scala的编程语法很简洁,只要具有C语言基础,大家可以很快掌握这两种编程语言。另外,这两种语言与Java是兼容的,在程序中可以直接调用Java中的类。程序员可以选择对程序进行编译,执行编译之后的二进制代码,也可以选择以脚本方式执行程序。
除此之外,从业人员需要掌握Linux操作系统的用法。虽然Hadoop可以运行在众多的操作系统中,但最理想的运行平台就是Linux。同样的道理,你不需要深入学习Linux,只要掌握用户管理、文件管理、软件包管理、进程管理、SHELL编程这些基本内容就可以了。说到这里,我们必须隆重地向Linus Benedict Torvalds致敬,没错,就是照片中这个微胖的家伙,他就是Linux的创始人,也是开源软件的鼻祖。二十多年前,Linus出于一个简单的想法而开发了Linux操作系统,当时他一定没有想到,经过二十多年的发展之后,Linux已经成为虚拟化、云计算、大数据的基础运行平台。
至此,大数据的学习之路已经很清晰了。如果你希望从事大数据方面的工作,那么首先应该先掌握Linux操作系统,同时学习Java,即J2SE。当你能够在Linux系统中编写并运行像样的Java程序时,就可以开始学习Hadoop环境的搭建了。接下来,在Hadoop中运行自己编写的Java程序,对数据进行简单的处理。在这个过程中,反复实验,不断积累经验。说起来轻松,实际上这个过程是非常艰辛的,因为要学习的东西太多,你很容易就能理解“盲人摸象”的深刻含义,所以说自学基本上是行不通的,而参加培训,或者观看视频教程,是非常必要的学习手段。他山之石可以攻玉,别人的成功经验能够引导你快速到达目的地。Java程序员转行搞大数据,也许是最佳途径。
最后再说说Hadoop的文档。IT界的老司机都知道,产品的官方文档,特别是原版英文文档,是学习一项IT技术的重要资源。老司机是怎样炼成的?反复阅读官方文档,不断积累自己的经验,仅此而已。然而,令人遗憾的是,Hadoop的官方文档非常简单,既没有解决问题的过程,也没有各个参数的详细解释,更没有像样的例子。在这里借用赵本山和宋丹丹的小品来比喻这种情况。问:要把大象装冰箱,总共分几步?Hadoop官方文档告诉你:分三步,第一步,把冰箱门打开;第二步,把大象装进冰箱;第三步,关上冰箱门。
总之,大数据的学习不是一蹴而就的,因为你需要面对完全陌生的概念,需要学习很多东西,同时要面对快速变化的Hadoop框架,以及匮乏的资料,所以一个人的毅力,学习能力,能否耐住寂寞,将直接决定这个过程的成败。然而,当你达到“会当凌绝顶”的高度时,反过来再回顾Hadoop的相关技术,真的是“一览众山小”。相比传统的IT技术,如UNIX系统管理、数据库管理、J2EE开发,大数据是非常简单的。
作者:刘宪军