大数据学习阶段及内容简单介绍(一)

大数据学习阶段(一)

Java SE

为什么要选择java
 零基础刚接触大数据的学员都知道,学习大数据课程之前,都需要先熟悉掌握一种计算机编程语言。要知道大数据开发需要编程语言作为基础,因为大数据的开发基于一些常用的高级语言。大数据中的很多框架都是建立在Java语言的基础上的,可以说Java是大数据的核心基础,Java语言作为面向对象,操作简单。不论是hadoop还是数据挖掘,都需要有高级编程语言的基础。因此,如果想学习大数据开发,还是需要至少精通一门高级语言。
 Java可以编写桌面应用程序,Java能够更加容易上手,Java作为最早的编程语言仍然拥有极高的跨平台能力。异常处理是Java中使得程序更稳健的另一个特征。程序员可以找到出错的处理代码,这就简化了出错处理和恢复的任务。最重要的是,Hadoop以及其他大数据处理技术很多都是用Java,因此学习Hadoop的一个首要条件,就是掌握Java语言编程。
 
为什么只学JavaSE
 大数据只需要学习Java的标准版JavaSE就可以了,像Servlet、JSP、Tomcat、Struct、Spring、Hibernate,Mybaits都是JavaEE方向的技术在大数据技术里用到的并不多,只需要了解就可以了,当然Java怎么连接数据库还是要知道的,像JDBC一定要掌握一下,有同学说Hibernate或Mybaits也能连接数据库啊,为什么不学习一下,我这里不是说学这些不好,而是说学这些可能会用你很多时间,到最后工作中也不常用,我还没看到谁做大数据处理用到这两个东西的,当然你的精力很充足的话,可以学学Hibernate或Mybaits的原理,不要只学API,这样可以增加你对Java操作数据库的理解,因为这两个技术的核心就是Java的反射加上JDBC的各种使用。

需要掌握什么知识点
 java基础语法、java面向对象(类、对象、封装、继承、多态、抽象类、接口、常见类、内部类、常见修饰符等)、异常、集合、文件、IO、MYSQL(基本SQL语句操作、多表查询、子查询、存储过程、事务、分布式事务)、JDBC、线程、反射、Socket编程、枚举、泛型、设计模式

Linux

为什么要学习Linux
 Hadoop通常都是搭建在Linux操作系统之上,故在搭建Hadoop实验环境之前,首先需要创建Linux系统环境。由于我们只是搭建Hadoop实验环境,而不是生产环境,因此,为简单起见,就采用虚拟机VMware+Linux操作系统。因为大数据相关软件都是在Linux上运行的,所以Linux要学习的扎实一些,学好Linux对你快速掌握大数据相关技术会有很大的帮助,能让你更好的理解hadoop、hive、hbase、spark等大数据软件的运行环境和网络环境配置,能少踩很多坑,学会shell就能看懂脚本这样能更容易理解和配置大数据集群。还能让你对以后新出的大数据技术学习起来更快。

需要掌握什么知识点
 由于Linux与windows都是os(操作系统),所以要掌握怎么在Linux系统上操作,就像你平时在windows上进行操作一样,当然Linux也有界面模式,在这里就不多讲了。

X-shell
 其实X-shell的安装的相关介绍也可并入上一小节,在网页链接的视频中也有相应的安装及网络连接的介绍。特此独立列出是为了强调其优势,在平时或者实际工作中我们往往需要远程连接服务器进行操作,此时就需要一种远程操作工具,X-shell无疑是很方便的。除此还可以选择Putty这种工具。

Hadoop

Hadoop是什么
在这里插入图片描述
 Hadoop是一个对海量数据进行处理的分布式系统架构,可以理解为Hadoop就是一个对大量的数据进行分析的工具,和其他组件搭配使用,来完成对大量数据的收集、存储和计算。Hadoop框架最核心的设计就是:HDFS 和 MapReduce。HDFS为海量的数据提供了存储;MapReduce为海量的数据提供了计算。
 Hadoop,Spark和Storm是目前最重要的三大分布式计算系统,Hadoop常用于离线的复杂的大数据处理,Spark常用于离线的快速的大数据处理,而Storm常用于在线的实时的大数据处理。

Haoop四大模块

  • MapReduce是一种并行编程模型,用于编写普通硬件的设计,谷歌对大量数据的高效处理(多TB数据集)的分布式应用在大型集群(数千个节点)以及可靠的容错方式。MapReduce程序可在Apache的开源框架Hadoop上运行。
  • Hadoop分布式文件系统(HDFS)是基于谷歌文件系统(GFS),并提供了一个设计在普通硬件上运行的分布式文件系统。它与现有的分布式文件系统有许多相似之处。来自其他分布式文件系统的差别是显著。它高度容错并设计成部署在低成本的硬件。提供了高吞吐量的应用数据访问,并且适用于具有大数据集的应用程序。
  • Hadoop通用:这是Java库和其他Hadoop组件所需的实用工具。
  • Hadoop YARN :这是作业调度和集群资源管理的框架。

一套完整的Hadoop大数据生态系统
在这里插入图片描述

  • HDFS:Hadoop分布式文件系统,专门存储超大数据文件,为整个Hadoop生态圈提供了基础的存储服务。
  • MapReduce:分布式离线计算框架,用来处理大量的已经存储在本地的离线数据。
  • Storm:分布式实时计算,主要特点是实时性,用来处理实时产生的数据。
  • ZooKeeper:用于Hadoop的分布式协调服务。Hadoop的许多组件依赖于Zookeeper,它运行在计算机集群上面,用于管理Hadoop操作。
  • HBase:是一个建立在HDFS之上,面向列的NoSQL数据库,用于快速读/写大量数据。
  • Hive:基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表。
  • Sqoop:是一个连接工具,用于在关系数据库、数据仓库和Hadoop之间转移数据。
  • Pig:它是MapReduce编程的复杂性的抽象。Pig平台包括运行环境和用于分析Hadoop数据集的脚本语言(Pig Latin)。

Zookeeper

什么是Zookeeper
在这里插入图片描述
 在Zookeeper的官网上有这么一句话:ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.
 这大概描述了Zookeeper主要可以干哪些事情:配置管理,名字服务,提供分布式同步以及集群管理。那这些服务又到底是什么呢?我们为什么需要这样的服务?我们又为什么要使用Zookeeper来实现呢,使用Zookeeper有什么优势?接下来我会挨个介绍这些到底是什么,以及有哪些开源系统中使用了。
 简单来说,zk个万金油,安装Hadoop的HA的时候就会用到它,以后的Hbase也会用到它。它一般用来存放一些相互协作的信息,这些信息比较小一般不会超过1M,都是使用它的软件对它有依赖,对于我们个人来讲只需要把它安装正确,让它正常的run起来就可以了。
想了解更多zookeeper内容,可以看连接https://www.cnblogs.com/jing99/p/6100188.html

Avro

首先来说说什么是串行化和反串行化

  • 串行化也叫序列化:就是把存在于内存的对象数据转化成可以保存成硬盘文件形式去储存。
  • 反串行化也叫反序列化:就是把串行化后硬盘文件加载到内存,重新变成对象数据,他们都是以字节流的方式在网络上传输的。

个人来说,学习大数据目前接触到四种串行化机制

扫描二维码关注公众号,回复: 4630166 查看本文章
  1. java串行化(ObjectOutputStream/ObjectInputStream)
  2. hadoop串行化
    实现hadoop串行化需要实现Writable接口并且实现接口的两个方法read和write
  3. hadoop之父(Doug Cutting)写的avro串行化
  4. 还有一种特别好用的串行化技术就是来自google的protobuf(下文有介绍)

为什么选择Avro
在这里插入图片描述
Avro是一个独立于编程语言的数据序列化系统,他是hadoop之父(Doug Cutting)编写,主要是解决Writable类型的不足:缺乏语言的可移植性。拥有一个可被多种语言(C,C++,C#,Java,PHO,Python和Ruby)处理的数据。Avro同时也更具有生命力,该语言将使得数据具有更长的生命周期,即使原先用于读/写该数据的语言已经不再使用。

想了解更多Avro内容,可以查看连接https://blog.csdn.net/weixin_41122339/article/details/82468116

ProtoBuf

Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。

想了解更多ProtoBuf内容,可以查看连接
https://www.ibm.com/developerworks/cn/linux/l-cn-gpb/index.html

Hive(数据仓库)

为什么要学习Hive
 这个东西对于会SQL语法的来说就是神器,它能让你处理大数据变的很简单,不会再费劲的编写MapReduce程序。有的人说Pig那?它和Pig差不多掌握一个就可以了。
什么是Hive
 1.hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
  2.Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。

Hive架构在这里插入图片描述

Hive与数据库异同
  由于Hive采用了SQL的查询语言HQL,因此很容易将Hive理解为数据库。其实从结构上来看,Hive和数据库除了拥有类似的查询语言,再无类似之处。本文将从多个方面来阐述Hive和数据库的差异。数据库可以用在Online的应用中,但是Hive是为数据仓库而设计的,清楚这一点,有助于从应用角度理解Hive的特性。(引用一个图片) 在这里插入图片描述

Hbase

Hbase简单介绍
HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库(NoSql)。另一个不同的是HBase基于列的而不是基于行的模式。

Hbase原理
HBase利用Hadoop HDFS作为其文件存储系统,利用MapReduce来处理HBase中的海量数据,利用Zookeeper作为对应协调服务组件;HBase位于结构化存储层,Hadoop HDFS为HBase提供了高可靠性的底层存储支持,Hadoop MapReduce为HBase提供了高性能的计算能力,Zookeeper为HBase提供了稳定服务和failover(故障切换)机制。此外,Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单。 Sqoop则为HBase提供了方便的RDBMS数据导入功能,使得传统数据库数据向HBase中迁移变的非常方便。

Hbase与传统数据库区别
https://blog.csdn.net/hellozhxy/article/details/80464973

Flume

简单了解Flume

  • Flume是一个分布式、可靠、和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
  • 一个独立的Flume进程称之为Agent,包含组件Source、Channel、Sink Source
  • Flume基础架构:Flume 可以单节点和多节点采集数据。
    在这里插入图片描述
    更多Flume内容大家可以参考
    https://www.cnblogs.com/tychyg/p/4950814.html

Kafka

什么是kafka
它是一个分布式的消息队列,消息队列:生产者、消费者的功能。它提供了类似于JMS 的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。
在这里插入图片描述

更多Kafka介绍可以查看
https://www.cnblogs.com/tychyg/p/4950846.html

Sqoop

探讨Sqoop及原理
在这里插入图片描述
  sqoop是用于把Mysql里的数据导入到Hadoop里的。当然你也可以不用这个,直接把Mysql数据表导出成文件再放到HDFS上也是一样的,当然生产环境中使用要注意Mysql的压力。
  将导入或导出命令翻译成 MapReduce 程序来实现 在翻译出的 MapReduce 中主要是对 InputFormat 和 OutputFormat 进行定制。

猜你喜欢

转载自blog.csdn.net/LuYi_WeiLin/article/details/83929345