1、Hadoop是什么
初识hadoop现在经常听到“大数据”这个词。 那是因为随着互联网、物联网等技术的迅速普及和应用,现在我们的生活中总是被这些数据包围着。 无论生活中的大小,背后都有相关的数据记录存储在存储空间中。
例如,你看到的这篇文章的内容存储在数据库中,当你在一个平台上看到这篇文章时,浏览记录也会记录在平台的数据存储中。
在当今大数据量时代,我们面临的问题很简单,数据量呈指数增长。 但是,硬盘访问速度并没有随着时代的发展而非常快。 向硬盘写入数据的速度当然更慢了。 以前的处理方式不能满足现阶段大数据量计算和读取的需要,互联网巨头谷歌优先推出MapReduce并行计算模型处理大数据量计算。 随后,Apache基金会以MapReduce为基础开发了hadoop框架。 这是分布式系统的基础架构,用户无需了解底层分布式的详细信息就可以开发分布式程序。 利用分布式集群进行高速存储和运算。
hadoop hadoop是Apache的开源框架,用于开发和执行分布式APP应用程序,并处理大量数据(大型数据集)。 Hadoop是处理实际问题而不是特定软件或APP应用程序的编程模型(思想),它支持基本的模块和软件。 主要学习模块包括:
1、Hadoop HDFS :分布式存储系统。
2、Hadoop YARN :任务调度和集群资源管理框架。
3、Hadoop MapReduce :基于Hadoop yarn的大型数据集并行计算处理系统。
4、其他模块以及一些hadoop生态圈的辅助工具,主要用于特定的目的或功能等。 例如:
Hbase:是一个分布式的、面向列的开源数据库。
hive :一种基于Hadoop的数据仓库工具。
pig :在Hadoop上运行的平台,用于分析和评估大型数据集。
Spark:Hadoop数据的快速通用计算引擎。
ZooKeeper:是分布式、开源的分布式APP应用程序协调服务,是Hadoop和Hbase的重要组件。
等等。 其中每个模块都有自己的功能,模块之间相互关联。 通常,hadoop是指hadoop的生态圈。
hadoop的优势虽然hadoop不是第一个分布式计算框架,但人们越来越了解和关注hadoop框架为何能脱颖而出。 主要区别如下。
1、方便: hadoop部署不需要昂贵的硬件设备,可以在常见的商用机器或云计算云服务器节点上完成部署。
2、可靠性:由于hadoop大部分在商用小型机上运行,机器会出现某些物理故障,但hadoop在出现这种故障时,数据处理没有问题。
3、可扩展的,hadoop通过增加集群节点,可以有效的扩展加快数据处理和计算的速度。 为了处理更大的数据集。
4、开发变得简单,如果没有hadoop框架的支持,自己开发适合业务需要的高效并行代码会非常麻烦。
1.1、小故事版本的解释
gddlh有计算100M文档中单词数量的任务。 此文档中有多行,每行有多个单词,每行中的单词和单词之间用空格键分隔。 对于这些处理100米订单数据的计算任务,gddlh感觉很轻松。 他先把这100米的文件复制到自己的电脑里,然后写了计算程序在他的电脑上运行后,顺利地输出了结果。
然后,gddlh接受了另一个任务,计算1t(1024g )文档中的单词数。 然后,gddlh接受另一个任务,计算一个1p(1024t )文档中的单词的个数……
面对如此大的数据,gddlh的一台计算机已经存储不下去了,无法计算如此大的数据文件中有多少词。 机智的gddlh连接百度互联网,他在百度的输入框里写道:“大数据的存储和计算怎么办? 按回车键,显示有关Hadoop的页面。
看了很多页面后,gddlh总结了一句话。 Hadoop是一种存储大量数据并分析大量数据的工具。
1.2、稍专业点的解释
Hadoop是一个以java语言编写的开源框架,用于在分布式服务器群集中存储大量数据并运行分布式分析APP应用程序,其核心部分是HDFS和MapReduce。
HDFS是分布式文件系统。 部署存储文件元数据信息的服务器Namenode和实际存储数据的服务器Datanode,然后分散存储和读取数据。
MapReduce是一个计算框架。 MapReduce的核心思想是将计算任务分配给群集中的服务器并执行。 通过分割计算任务(映射计算/Reduce计算),根据任务调度器(作业跟踪程序)分配任务
进行分布式计算。1.3、记住下面的话:
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
把HDFS理解为一个分布式的,有冗余备份的,可以动态扩展的用来存储大规模数据的大硬盘。
把MapReduce理解成为一个计算引擎,按照MapReduce的规则编写Map计算/Reduce计算的程序,可以完成计算任务。
2、Hadoop能干什么
大数据存储:分布式存储
日志处理:擅长日志分析
ETL:数据抽取到oracle、mysql、DB2、mongdb及主流数据库
机器学习: 比如Apache Mahout项目
搜索引擎:Hadoop + lucene实现
数据挖掘:目前比较流行的广告推荐,个性化广告推荐
Hadoop是专为离线和大规模数据分析而设计的,并不适合那种对几个记录随机读写的在线事务处理模式。
实际应用:
(1)Flume+Logstash+Kafka+Spark Streaming进行实时日志处理分析
(2)酷狗音乐的大数据平台
3、怎么使用Hadoop
3.1、Hadoop集群的搭建
无论是在windows上装几台虚拟机玩Hadoop,还是真实的服务器来玩,说简单点就是把Hadoop的安装包放在每一台服务器上,改改配置,启动就完成了Hadoop集群的搭建。
3.2、上传文件到Hadoop集群
Hadoop集群搭建好以后,可以通过web页面查看集群的情况,还可以通过Hadoop命令来上传文件到hdfs集群,通过Hadoop命令在hdfs集群上建立目录,通过Hadoop命令删除集群上的文件等等。
3.3、编写map/reduce程序
通过集成开发工具(例如eclipse)导入Hadoop相关的jar包,编写map/reduce程序,将程序打成jar包扔在集群上执行,运行后出计算结果。