学习着数据科学与大数据技术专业(简称大数据)的我们,对于“大数据”这个词是再熟悉不过了,而每当我们越去了解大数据就越发现有个词也会一直被提及那就是——Hadoop
那Hadoop与大数据有什么关系呢?
所谓 大数据 ,就是从各种类型的数据中, 快速获得有价值信息的能力 。大数据是需要新处理模式才能具有更强的决策力、洞察力和流程优化能力的海量、高增长率和多样化的信息资产。它是对那些超出正常处理范围和大小、迫使用户采用非传统处理方法的数据集所下的定义。
对大数据以及人工智能概念都是模糊不清的,该按照什么线路去学习,学完往哪方面发展,想深入了解,想学习的同学欢迎加入大数据学习qq群:957205962,有大量干货(零基础以及进阶的经典实战)分享给大家,让大家了解到目前国内最完整的大数据高端实战实用学习流程体系 。从java和linux入手,其后逐步的深入到HADOOP-hive-oozie-web-flume-python-hbase-kafka-scala-SPARK等相关知识一一分享!
大数据与Hadoop有什么关系?
Hadoop 是 Apache软件基金会 发起的一个项目,是一种分 布式数据和计算的框架。 它很擅长存储大量的 半结构化 的数据集。数据可以随机存放,所以一个磁盘的失败并不会带来数据丢失。Hadoop也非常擅长分布式计算—— 快速地跨多台机器处理大型数据集合。
伴随大数据技术的普及,Hadoop作为数据分布式处理系统的 典型代表 因其开源的特点和卓越的性能成为一时的新宠,已经成为该领域事实的标准,甚至有人认为 大数据就是Hadoop ,其实这是一个 误区 。但 Hadoop并不等于大数据 ,Hadoop只是处理离线数据的分布式存储和处理系统 。如用于处理流数据的Storm、处理关系型数据的Oracle、处理实时机器数据的Splunk……目前主流的大数据系统很多, Hadoop只是其中的代表 。
Hadoop大数据处理的意义
Hadoop 得以在大数据处理应用中广泛应用得益于其自身在 数据提取、变形和加载(ETL)方面上的天然优势 。Hadoop的分布式架构,将大数据处理引擎尽可能的靠近存储,对例如像ETL这样的批处理操作相对合适,因为类似这样操作的批处理结果可以直接走向存储。 Hadoop的MapReduce 功能实现了 将单个任务打碎 ,并将碎片任务(Map) 发送到多个节点上 ,之后再以单个数据集的形式 加载(Reduce)到数据仓库里
在大数据时代, Hadoop 以其优越的性能受到业界的广泛关注,已经 成为大数据 处理领域事实上的 标准。 如今,Hadoop在诸多领域大显身手。随着开源社区和国际众多国际技术厂商对这一开源技术的积极支持与持续的大量投入,相信不久的将来,Hadoop技术会被拓展到更多的应用领域。
大数据Hadoop入门简介
hadoop是什么
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的硬件上;而且它提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集的应用程序。HDFS放宽了POSIX的要求,可以以流的形式访问文件系统中的数据。
Hadoop的框架最核心的设计就是: HDFS和MapReduce 。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。
1、Apache Hadoop:是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架构。
2、Apache Hive:是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
3、Apache Pig:是一个基于Hadoop的大规模数据分析工具,它提供的SQL-LIKE语言叫PigLatin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。
4、Apache HBase:是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PCServer上搭建起大规模结构化存储集群。
5、Apache Sqoop:是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(MySQL,Oracle,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
6、Apache Zookeeper:是一个为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。
7、Apache Mahout:是基于Hadoop的机器学习和数据挖掘的一个分布式框架。Mahout用MapReduce实现了部分数据挖掘算法,解决了并行挖掘的问题。
8、Apache Cassandra:是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存简单格式数据,集GoogleBigTable的数据模型与AmazonDynamo的完全分布式的架构于一身
9、Apache Avro:是一个数据序列化系统,设计用于支持数据密集型,大批量数据交换的应用。Avro是新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。
10、 Apache Ambari:是一种基于Web的工具,支持Hadoop集群的供应、管理和监控。
11、 Apache Chukwa:是一个开源的用于监控大型分布式系统的数据收集系统,它可以将各种各样类型的数据收集成适合Hadoop处理的文件保存在HDFS中供Hadoop进行各种MapReduce操作。
12、Apache Hama:是一个基于HDFS的BSP(BulkSynchronousParallel)并行计算框架,Hama可用于包括图、矩阵和网络算法在内的大规模、大数据计算。
13、Apache Flume:是一个分布的、可靠的、高可用的海量日志聚合的系统,可用于日志数据收集,日志数据处理,日志数据传输。
14、Apache Giraph:是一个可伸缩的分布式迭代图处理系统,基于Hadoop平台,灵感来自BSP(bulksynchronousparallel)和Google的Pregel。
15、 Apache Oozie:是一个工作流引擎服务器,用于管理和协调运行在Hadoop平台上(HDFS、Pig和MapReduce)的任务。
16、Apache Crunch:是基于Google的FlumeJava库编写的Java库,用于创建MapReduce程序。与Hive,Pig类似,Crunch提供了用于实现如连接数据、执行聚合和排序记录等常见任务的模式库。
17、Apache Whirr:是一套运行于云服务的类库(包括Hadoop),可提供高度的互补性。Whirr学支持AmazonEC2和Rackspace的服务。
18、Apache Bigtop:是一个对Hadoop及其周边生态进行打包,分发和测试的工具。
19、Apache HCatalog:是基于Hadoop的数据表和存储管理,实现中央的元数据和模式管理,跨越Hadoop和RDBMS,利用Pig和Hive提供关系视图。
20、 Cloudera Hue:是一个基于WEB的监控和管理系统,实现对HDFS,MapReduce/YARN,HBase,Hive,Pig的web化操作和管理。
HDFS文件系统
HDFS(Hadoop Distributed File System,Hadoop分布式文件系统),它是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,适合那些有着超大数据集(largedata set)的应用程序。
HDFS的设计特点:
1、大数据文件,非常适合上T级别的大文件或者一堆大数据文件的存储。
2、文件分块存储,HDFS会将一个完整的大文件平均分块存储到不同计算器上,它的意义在于读取文件时可以同时从多个主机取不同区块的文件,多主机读取比单主机读取效率要高得多。
3、流式数据访问,一次写入多次读写,这种模式跟传统文件不同,它不支持动态改变文件内容,而是要求让文件一次写入就不做变化,要变化也只能在文件末添加内容。
4、廉价硬件,HDFS可以应用在普通PC机上,这种机制能够让给一些公司用几十台廉价的计算机就可以撑起一个大数据集群。
5、硬件故障,HDFS认为所有计算机都可能会出问题,为了防止某个主机失效读取不到该主机的块文件,它将同一个文件块副本分配到其它某几个主机上,如果其中一台主机失效,可以迅速找另一块副本取文件。
HDFS的master/slave构架:
一个HDFS集群是有一个Namenode和一定数目的Datanode组成。Namenode是一个中心服务器,负责管理文件系统的namespace和客户端对文件的访问。Datanode在集群中一般是一个节点一个,负责管理节点上它们附带的存储。在内部,一个文件其实分成一个或多个block,这些block存储在Datanode集合里。Namenode执行文件系统的namespace操作,例如打开、关闭、重命名文件和目录,同时决定block到具体Datanode节点的映射。Datanode在Namenode的指挥下进行block的创建、删除和复制。Namenode和Datanode都是设计成可以跑在普通的廉价的运行linux的机器上。
HDFS的关键元素:
1、Block:将一个文件进行分块,通常是64M。
2、NameNode:保存整个文件系统的目录信息、文件信息及分块信息,这是由唯一一台主机专门保存,当然这台主机如果出错,NameNode就失效了。在Hadoop2.*开始支持activity-standy模式----如果主NameNode失效,启动备用主机运行NameNode。
3、DataNode:分布在廉价的计算机上,用于存储Block块文件。
MapReduce文件系统
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。MapReduce将分成两个部分"Map(映射)“和"Reduce(归约)”。
当你向MapReduce框架提交一个计算作业时,它会首先把计算作业拆分成若干个Map任务,然后分配到不同的节点上去执行,每一个Map任务处理输入数据中的一部分,当Map任务完成后,它会生成一些中间文件,这些中间文件将会作为Reduce任务的输入数据。Reduce任务的主要目标就是把前面若干个Map的输出汇总到一起并输出。