Hadoop简介

一、简介

Hadoop是一个开源的分布式计算平台,用于存储大数据,并使用MapReduce来处理。Hadoop擅长于存储各种格式的庞大的数据,任意的格式甚至非结构化的处理。两个核心:

  • HDFS:Hadoop分布式文件系统(Hadoop Distributed File System),具有高容错性和伸缩性,使用java开发

  • MapReduce:Google MapReduce的开源实现,分布式编程模型使用户更方便的开发并行应用

使用Hadoop可以轻松的组织计算机资源,从而搭建自己的分布式计算平台,并且可以充分利用集群的计算 和存储能力,完成海量数据的处理。

二、Hadoop的优势

  1. 高可靠性:Hadoop按位存储和处理数据的能力具有很高的可靠性

  2. 高拓展性:Hadoop是在可用的计算机集簇间分配数据完成计算任务的,这些集簇可以拓展到数以千计的节点中

  3. 高效性:Hadoop能够在节点之间动态地移动数据,以保证各个节点的动态平衡,因此其处理速度非常快

  4. 高容错性:Hadoop能够自动保存数据的多份副本,并且能够自动将失败的任务重新分配

三、关联项目

  • Common:为Hadoop及其子项目提供支持的常用工具,主要包括FileSystem,RPC和串行化库。

  • Avro:Avro用于数据序列化的系统。提供了丰富的数据结构类型、快速可压缩的二进制格式、存储持久性数据的文件集、远程调用RPC的功能和简单的动态语言集成功能。

  • MapReduce:是一种编程模型,用于大规模数据集(大于1TB)的并行运算。

  • HDFS:分布式文件系统。

  • YRAN:分布式资源管理。

  • Chukwa:开源的数据收集系统,用于监控和分析大型分布式系统的数据。

  • Hive:一个建立在Hadoop基础之上的数据仓库,它提供了一些用于对Hadoop文件中的数据集进行数据整理、特殊查询和分析存储的工具。Hive提供一种结构化数据的机制,支持类似传统RDBMS的SQL语言的查询语言来帮助那些熟悉SQL的用户查询Hadoop中的数据,该查询语言成为Hive SQL。

  • Hbase:一个分布式的、面向列的开源数据库,适合非结构化的数据存储。主要用于需要随机访问、实时读写的大数据。

  • Pig:是一个对大型数据集进行分析、评估的平台。Pig最突出的优势是它的结构能够经受住高度并行化的检验。

  • Zookeeper:为分布式应用设计的协调服务,主要为用户提供同步、配置管理、分组和命令等服务。

四、编译安装Hadoop

因为我是用的是32位系统,官方预编译版本只有64位的,无法使用,所以得编译源代码。

根据编译文件BUILDING.txt内容,安装hadoop之前需要保证有以下工具:

编译这个玩意儿断断续续用了3天时间,下面是遇到的问题总结记录一下。

问题1:

mvn package -Pdist,native -DskipTests -Dtar的时候编译失败:

解决:

vim hadoop-common-project/hadoop-common/pom.xml将javah的执行路径改为绝对路径

问题2:

mvn package -Pdist,native -DskipTests -Dtar的时候编译失败:

解决:

cmake版本不对,安装cmake3.0版本:

还是不行。使用mvn package -Pdist,native -DskipTests -Dtar -e -X打印所有日志,可以找到:

查看hadoop-common-project/hadoop-common/target/native/CMakeFiles/CMakeError.log日志,看到报错:

解决方案:更改hadoop-common-project/hadoop-common/HadoopCommon.cmake,将两处-mfloat-abi=softfp改为-mfloat-abi=hard,参考:https://blog.csdn.net/wuyusheng314/article/details/79428996https://stackoverflow.com/questions/49139125/fatal-error-gnu-stubs-soft-h-no-such-file-or-directory。(最好是重新解压原始包更改完重新编译,要不然可能会出错)

这个改完又有了新问题,编译Apache Hadoop MapReduce NativeTask是报错

看错误应该是指令问题,google一番后,找到解决方案:https://issues.apache.org/jira/browse/HADOOP-14922https://issues.apache.org/jira/browse/HADOOP-11505

编辑primitives.h文件,根据https://issues.apache.org/jira/secure/attachment/12693989/HADOOP-11505.001.patch里面的git log修改后重新编译。

经历了3天的折磨,终于成功了!来,看看成功后的显示:

编译完成后的内容在hadoop-dist里面。感受一下为了编译这个玩意儿尝试了多少个版本:

五、启动运行hadoop

hadoop-dist/target里面的hadoop-3.1.2.tar.gz拷贝到你要安装的位置,解压。

访问8088端口http://localhost:8088就可以看到hadoop的管理界面了!

hadoop的web界面:

问题1: 启动时报错:

解决方案:

Last updated

Was this helpful?