Hadoop新手学习指导

来源:互联网 发布:淘宝网店需要交税吗 编辑:程序博客网 时间:2024/05/01 15:15

转载网址:1.http://www.bi168.cn/thread-12741-1-1.html

                    2.http://www.bi168.cn/thread-12748-1-1.html


1.

零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易。从一开始什么都不懂,到能够搭建集群,开发。整个过程,只要有Linux基础,虚拟机化和java基础,其实hadoop并没有太大的困难。下面整理一下整个学习过程,给大家一个参考。
    
       首先我们要了解hadoop是什么?Hadoop能够做什么?Hadoop的使用场景是什么?Hadoop和大数据、云计算的关系是什么?如何使用hadoop?
       当大家对这些问题有了基本的了解之后,接下来我们就要系统性的学习hadoop了。我个人建议大家不要一味的去学习理论知识,最好是理论和实践相结合,可以先跟着视频和文档去操作,先把伪分布式集群搭建起来,把wordcount实例运行起来,对hadoop集群的搭建过程和运行机制有个大概的了解和认知,然后从操作的过程中去发现自己在哪方面是薄弱点,有针对性的去弥补,这样学习就会更有针对性和目的性,学习效果也相对会更好一些,否则学习会很盲目、很痛苦的。
        我们知道hadoop有单机模式,伪分布模式和分布式模式。同时hadoop的环境是Linux,所以我们还需要安装Linux系统。因为我们的习惯是使用windows,所以对于Linux上来就安装软件之类的,困难程度会很大。并且我们要搭建集群,需要多台硬件的,不可能为了搭建集群,去买三台电脑。所以从成本和使用的角度我们还需要懂虚拟化方面的知识。这里的虚拟化其实就是我们需要懂得虚拟机的使用。因为hadoop安装在Linux中,才能真正发挥作用。所以我们也不会使用windows。
       基于以上内容。所以我们需要懂得
       1.虚拟化
       2.Linux
       3.java基础
  下面我们来详细介绍:
  虚拟化:我们选择的是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就会更快速、更轻松。


2.

hadoop核心知识学习:
hadoop分为hadoop1.X和hadoop2.X,并且还有hadoop生态系统。这里只能慢慢介绍了。一口也吃不成胖子。
那么下面我们以hadoop2.x为例进行详细介绍:
Hadoop的核心是mapreduce和hdfs。
Mapreduce:mapreduce是很多人都需要迈过去的槛,它比较难以理解,我们有时候即使写出了mapreduce程序,但是还是摸不着头脑。我们都知道mapreduce是一种编程模型,那么它能干什么,对我有什么用。它的原理是什么,为什么我们编写了map函数,reduce函数就可以在多台机器上运行,这些问题或许都给初学者带来了困扰。
那么我们就要了解:
什么是mapreduce?
Mapreduce的工作原理是什么?
Mapreduce的工作流程是什么?
Mapreduce的编程模型是什么?
shuffle是什么?
partition是什么?
combiner是什麽?
他们三者之间的关系是什么?
map的个数由谁来决定,如何计算?
reduce个数由谁来决定,如何计算?
mapreduce熟悉了,还有一些问题困扰着初学者,虽然有了Java基础,但是我们需要搭建开发环境,该如何搭建开发环境?
那么就需要我们学习Windows上如何使用Eclipse远程连接Hadoop并进行程序开发
因为在操作mapredcue过程中伴随着操作hdfs,就像我们传统开发,编程是离不开数据库一样。hdfs可以理解为传统编程的数据库,但是其实他不是,真正的数据库是hadoop data base,也就是hbase。好了下面,我们开始讲如何学习hdfs:
HDFS:我们至少应该学习以下内容
什么是HDFS及HDFS架构设计?
HDFS体系结构简介及优缺点?
Hdfs如何存储数据?
Hdfs如何读取数据?
Hdfs如何写入文件?
Hdfs的副本存放策略?
如何访问hdfs?
Hdfs数据如何复制?
Namenode的热备?
    hadoop生态系统内容还是比较多的,但是最常用的是hive,hbase。
Hive是初学者进入大数据(hadoop)行业最好的选择入口,因为它提供了简单的类sql语句,使得不懂得mapreduce程序编写的学员也能够很轻松的进入大数据行业。所以建议大家(尤其是零基础的学员)在学习hadoop的过程中,可以着重加强对hive的学习,尤其是hive语句的熟练操作。当然对于有数据库基础的学员学习hive就更容易一些。
Hbase是一种nosql数据库,只有当数据量非常大时,比如TB、PB级,hbase才能发挥出很好的效果,所以对于致力于加入大公司的学员,可以深入学习hbase,尤其是hbase表的设计,rowkey的设计,hbase性能的调优,hbase和hive、impala的结合等。
Yarn是分布式集群资源管理框架,也是hadoop2.x和hadoop1.x明显不同的地方,所以我们还是有必要对yarn的原理、框架、组成部分进行详细的了解的。
对于hadoop其他的组件:比如海量日志收集工具flume,数据导入导出工具sqoop,应用程序协调服务zookeeper,学员可以结合实战项目学习其原理,如何使用即可。
对于想从事数据挖掘的学员,可以深入学习mahout、机器学习、算法等相关知识,根据学员自己的职业选择和兴趣爱好自主选择,建议零基础的学员最好是先从hive入手。
Storm是一种基于流的计算框架,Spark是基于内存的计算框架,它们是不同于mapreduce的计算框架,但作用都是对数据的处理和分析,建议初学者在学习好mapreduce的前提下,可以对storm和spark进行深入的学习,切记贪多嚼不烂。通而不精。
如果想更加深入的学习,丰富自己的知识,可以选择性的学习一下shell、python脚本语言,Redis、MongoDB等nosql数据库,如果想做hadoop运维的,也可以学习ganglia和nagios等监控工具。
最后建议大家在学习过程中一定要由浅入深、从简单到复杂、理论和实践相结合,由于hadoop生态系统的工具比较多,每个工具有不同的侧重点,所以再次提醒大家切记贪多、切记浮躁、只有基础扎实了,后续的学习才会更轻松、更快速、更高效。

0 0
原创粉丝点击