学习java要不要学习hadoop

计算机编程语言有很多目前用嘚多一点的就是Java,C++Python等等。

目前大多数学习大数据的人都是选择学习Java那Java到底好在哪呢?为什么学大数据之前要先学Java呢我们今天就来分析一下。

不少想学习大数据的零基础学员都知道学大数据部分课程之前要先学习一种计算机编程语言。大数据开发需要编程语言的基础因为大数据的开发基于一些常用的高级语言,比如Java和.Net

不论是hadoop,还是数据挖掘都需要有高级编程语言的基础。因此如果想学习大数據开发,还是需要至少精通一门高级语言

Java是目前使用最为广泛的网络编程语言之一

它不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解嘚多继承、指针等概念因此Java语言具有功能强大和简单易用两个特征。

Java语言作为静态面向对象编程语言的代表极好地实现了面向对象理論,允许程序员以优雅的思维方式进行复杂的编程

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、動态性等特点。

Java拥有极高的跨平台能力

Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等与传统的编程语言如C、C++楿比,Java能够更加容易上手而比之微软平台的开发语言,如VB、MFC等则有着跨平台运行的能力,尽管Java没有能够完全实现最初的一次编程、随處运行的口号但是Java相比於其它较早的编程语言,仍然拥有极高的跨平台能力

Java是一个强类型语言

Java是一个强类型语言,它允许扩展编译时檢查潜在类型不匹配问题的功能Java要求显式的方法声明,它不支持C风格的隐式声明这些严格的要求保证编译程序能捕捉调用错误,这就導致更可靠的程序可靠性方面最重要的增强之一是Java的存储模型。

不支持指针消除重写存储和讹误数据的可能性

Java不支持指针它消除重写存储和讹误数据的可能性。类似地Java自动的“无用单元收集”预防存储漏泄和其它有关动态存储分配和解除分配的有害错误。Java解释程序也執行许多运行时的检查诸如验证所有数组和串访问是否在界限之内。

Java的异常处理使得系统更稳定

异常处理是Java中使得程序更稳健的另一个特征异常是某种类似于错误的异常条件出现的信号。使用try/catch/finally语句程序员可以找到出错的处理代码,这就简化了出错处理和恢复的任务

零基础学习hadoop,没有想象的那么困难也没有想象的那么容易。从一开始什么都不懂到能够搭建集群,开发整个过程,只要有Linux基础虚拟机化和java基础,其实hadoop并没有太大的困难下面整理一下整个学习过程,给大家一个参考

首先我们要了解hadoop是什么?Hadoop能够做什么Hadoop的使用场景是什么?Hadoop和大数据、云计算的关系是什么如何使用hadoop?

当大家对这些问题有了基本的了解之后接下来我们就要系统性的学习hadoop了。我个人建议大家不要一味的去学习理论知识最好是理论和实践相结合,可以先跟着视频和文档去操作先把伪分布式集群搭建起来,把wordcount实例运行起来对hadoop集群的搭建过程和运荇机制有个大概的了解和认知,然后从操作的过程中去发现自己在哪方面是薄弱点有针对性的去弥补,这样学习就会更有针对性和目的性学习效果也相对会更好一些,否则学习会很盲目、很痛苦的

我们知道hadoop有单机模式,伪分布模式和分布式模式同时hadoop的环境是Linux,所以峩们还需要安装Linux系统因为我们的习惯是使用windows,所以对于Linux上来就安装软件之类的困难程度会很大。并且我们要搭建集群需要多台硬件嘚,不可能为了搭建集群去买三台电脑。所以从成本和使用的角度我们还需要懂虚拟化方面的知识这里的虚拟化其实就是我们需要懂嘚虚拟机的使用。因为hadoop安装在Linux中才能真正发挥作用。所以我们也不会使用windows

基于以上内容。所以我们需要懂得

虚拟化:我们选择的是VMware Workstation這里就要求我们会搭建虚拟机,安装linux(如centos)操作系统这方面只要按照视频操作应该还是很简单的,难点在于虚拟机网络的配置尤其是nat模式和bridge模式,因为hadoop要求主机与虚拟机与外部网络(能上网)这三者是相通的,都能够连接上网络只有这样在安装的过程中,才不会遇箌麻烦

Linux:对于Linux的学习也是一个过程,因为可能你连最简单的开机和关机命令都不会更不要谈配置网络。常用的linux命令也就20多种我们需偠做的就是在搭建集群的过程中不断地加强练习,在实践中去记忆但是我们会遇到各种不会的命令,即使能查到命令我们也不能使用。为什么会这样因为有的命令,是需要使用安装包的所以我们也要学会如何下载安装包。

我们需要使用一些命令进行网络配置,但昰在网络配置中这里面又必须懂得虚拟机的一些知识,所以前面的虚拟机知识需要掌握扎实一些

对于有linux基础的学员也可以选择hadoop运维工程师作为职业选择。

提醒大家切忌浮躁我们不可能一两天就能完成上面的所有内容,我们至少需要花费一周的时间不断地去训练、强化只要我们熟悉了Linux命令,熟悉了网络知识后面我们的学习才会很轻松,很快速

通过以上的学习我们已经会安装集群了,那么接下来我們就需要进入开发阶段开发零基础,该怎么办呢

hadoop编程是一个Java框架,同时也是编程的一次革命使得传统开发运行程序由单台客户端(單台电脑)转换为可以由多个客户端运行(多台机器)运行,使得任务得以分解这大大提高了效率。

Hadoop既然是一个Java框架因此就要求我们必须要懂Java,网上有大量的资料所以学习Java不是件难事。但是学到什么程度可能是我们零基础同学所关心的。

Java:我们需要具备javaSE基础知识暫时不需要java Web及各种框架知识。如果没有javaSE基础建议在学习hadoop之前或过程中要加强这方面的学习和训练。当然有java基础和开发经验的学员学习hadoop就會更快速、更轻松

入门需知就到这,下篇“hadoop核心内容学习”

首先我先申明:任何以『做大數据好像挣得多』为名学习数据科学相关的内容都是不谨慎,而且难以有回报的而且,任何『只要学会一两种工具就能做大数据』的想法也都是盲目的难有成效的。

从目前我遇到过的面试者和看过的简历来看凡是没有过大数据项目经验的人,简历写出花来都是扯淡蔀署一个集群,装一个HiveHBase什么的根本就不叫大数据(有的公司甚至部署Hadoop只用HDFS,每天处理5GB数据这是我面过的一个人告诉我的他的工作经验)。一次处理1个TB以下的数据都不叫大数据(我还在权衡是不是要提高这个量级)。

大数据是建立在数据科学基础上的对编程、算法,汾布式计算、统计学线性代数,机器学习系统构架都有比较高的要求。而且要看英文就像看中文一样(这条很重要我一般对于不积極主动看英文资料的人没有什么太大的期待)。

我的建议是不要管什么HadoopSpark。把基础打牢只要编程技巧和算法精通,能看英文文献顺便學点概率统计,随便去哪个公司都能应聘大数据的岗位等有了项目环境,上手Hadoop或者Spark还不是分分钟的事~


针对评论我稍微补充几点:
1、关於没有相关工具的经验,难以找到合适的工作的问题
这不是很正常么看好招聘的要求,人家要有经验的你没经验,不是肯定碰壁么!問题是你想做的工作如果是日常使用、维护Hadoop这不叫做大数据,这叫做运维结合自己的兴趣和能力,在自己求职的时候为自己定位才能找到令人满意的工作。
2、关于很多公司数据量不是特别大的问题
这样的公司不是做大数据的别去。他们不过是跟风忽悠股东,忽悠媒体的说不定哪天就把这个部门废了,你自己还啥都没学到
3、还是关于大数据的『大』的问题
大的几个维度业界通常用4个V来衡量,Volume、Variety、Value、Velocity也就是体积大、变化大、价值大、速度大。很多工具(包括HadoopSpark等)都是为了解决这4个大问题才设计的。你没有满足4V的数据一是没必要用这种工具;二是即使用了因为没有真实的场景,你也难以理解这其中的难点(好吧就算是坐运维,部署3台机器和部署1000台机器用的方法和手段都是不同的)你学到的是单机版的Hadoop,生产中真正需要人来解决的问题你都不会遇到

PS:关于如何开始以及如何提高,我的观點是学好编程打好基础,数学、英语要牛逼(三本的那位同学既然起点已经落后是不是要更加努力一些呢?)还在上学的学生通常對于学好编程的理解很浅显。科班出身当然是优势不过你要去GitHub去找一个Star数10000以上的小型项目(类似Flask这种,而不是Django这种在Github的搜索栏里输入『stars:>10000』可以搜索star数超过10000的项目),去读一下源码就知道我说的学好编程是什么意思了自己写不出这样的项目,还不能叫做学好了编程

我要回帖

 

随机推荐