Hadoop基础学习
Posted JasonCode
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop基础学习相关的知识,希望对你有一定的参考价值。
Hadoop基础学习
1. Hadoop简介
- Hadoop是一个开源分布式计算平台,为用户提供系统底层细节透明的分布式基础架构。Hadoop是基于Java语言开发的,具有很好的跨平台性,平且可以部署到廉价的计算机集群当中去。Hadoop的核心是Hadoop分布式文件系统(HDFS)和MapReduce
- HDFS 是面向普通硬件环境的分布式文件系统,具有较高的读写速度,很好的容错性和可伸缩性,支持大规模数据的分布式存储,其冗余数据存储的方式保证了系统的安全性
- MapReduce 允许用户在不了解分布式系统底层细节的情况下开发并行应用程序,采用MapReduce来整合分布式文件系统上的数据,可以保证分析和处理数据的高效性
2. Hadoop的特性
- Hadoop是一个能够对大量数据进行分布式处理的软件框架,并且是以一种可靠,高效,可伸缩的方式进行处理的,主要具有以下几个方面的特性:
- 高可靠性 采用冗余数据存储方式,即使一个副本发生故障,其他副本也可以保证正常对外提供服务
- 高效性 Hadoop采用分布式存储和分布式处理两大核心技术,能够高效的处理PB级数据
- 高扩展性 Hadoop的设计目标就是可以高效稳定的运行在廉价的计算机集群上,可以扩展到数以千计的计算机节点当中去
- 高容错性 采用冗余数据存储方式,自动保存数据的多个副本,并且能够自动将失败的任务进行重新分配
- 成本低 Hadoop采用廉价的计算机集群,普通用户也很容易用自己的PC搭建Hadoop环境
- 运行在Linux操作系统上 Hadoop是基于Java开发的,可以较好地运行在Linux操作系统上
- 支持多语言编程 Hadoop上的应用程序也可以使用其他语言编写
3. Hadoop版本
- Apache Hadoop版本
- Hadoop1.0
- Hadoop2.0 是基于jdk1.7开发的
- Hadoop3.0 是基于jdk1.8开发的
- 商业公司推出的Hadoop发行版
- MapR
- Hortonworks
- 星环
- 商业化公司推出的Hadoop发行版也是以Apache Hadoop为基础,但是前者比后者具有更好的易用性、更多的功能和更高的性能
4. Hadoop生态系统
- HDFS Hadoop文件分布式管理系统是Hadoop项目的两大核心之一,具有处理超大数据,流处理,可以在廉价商用服务器上等优点。HDFS在访问应用程序数据时,可以有很高的吞吐率,对于超大数据集的应用程序而言,选择HDFS作为底层数据存储系统是较好的选择。
- HBase是一个提供可靠性,高性能,可伸缩,实时读写,分布式的列式数据库,一般采用HDFS作为其底层数据存储系统。Hbase与传统关系数据库的一个重要区别就是前者采用基于列的存储,后者采用基于行的存储。Hbase具有很好的横向扩展能力,可以通过不断增加廉价的商用服务器来提高存储能力。
- MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算,将复杂的,运行于大规模集群上的并行计算过程高度的概括为两个函数-Map和Reduce,并且允许用户在不了解分布式系统底层细节的情况下开发并行应用程序。MapReduce的核心思想就是“分而治之”,它把输入的数据集切分为若干个独立的数据块,分发给一个主节点管理下的各个分节点来共同并行完成。最后,通过整合各个节点的中间结果得到最终结果。
- Hive是一个基于Hadoop的的数据仓库工具,可以用于对Hadoop文件中的数据集进行数据整理,特殊查询和分析存储。提供了类似于关系数据库的SQL的查询语言-HiveQL,我们可以通过HiveQL快速实现简单的MapReduce任务,Hive自身可以将HiveQL转换为MapReduce任务来执行,而不必开发专门的MapReduce程序,十分适合数据仓库的统计分析。
- Pig 是一种数据流语言和运行环境,适用于使用Hadoop和MapReduce平台来查询大型半结构化数据集。采用Pig比MapReduce具有明显的优势,前者只需要编写一个简单的脚本在集群中自动并行处理并发,后者需要编写一个单独的MapReduce应用程序
- Mahout 提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷的创建智能应用
- ZooKeeper 是高效和可靠的协同工作系统,提供分布式锁之类的基本服务,用于构建分布式应用,减轻分布式应用所承担的协调任务。
- Flume是一个高可用的,高可靠的,分布式的海量日志采集,聚合和传输的系统。Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理并写到各种数据接收方的能力。
- Sqoop主要用来Hadoop和关系数据库之间交换数据,可以改善数据的互操作性。理论上,支持JDBC的关系数据库都可以使Sqoop和Hadoop进行数据交互。Sqoop是专门为大数据集设计的,支持增量更新,可以将新记录添加到最近一次导出的数据源上,或者指定上次修改的时间戳。
- Ambari 是一种基于Web的工具,支持Apache Hadoop集群的安装,部署,配置和管理
以上是关于Hadoop基础学习的主要内容,如果未能解决你的问题,请参考以下文章