hadoop.
#@author: gr
#@date: 2014-07-03
#@email: forgerui@gmail.com
一、基础概念
1.1. hadoop vs openstack
OpenStack 是云计算平台.说白了就是能够在上面创建虚拟机,管理虚拟机(美其名曰:计算资源虚拟化),管理存储资源(美其名曰:存储资源虚拟化).OpenStack的存储管理包括两个工具:一个是分布式文件系统,一个是为虚拟机创建磁盘的工具.OpenStack可以和hadoop比较的就是分布式文件系统.
Hadoop核心是mapreduce的分布式计算模型。
总的来说:OpenStack和hadoop不是同一个层次的东西,无法比较.
1.2. hadoop vs spark
Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。
二、 安装
网上教程很多,如http://blog.itpub.net/28929558/viewspace-1354180/,http://dblab.xmu.edu.cn/blog/install-hadoop/,配置过程中不能一味地照搬,需要根据自己的情况进行修改,这里就不介绍了。
主要讲一下遇到的问题以及测试结果:
2.1. 问题一
问题如下:
15/07/03 18:39:27 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
网上说是本地库是32位的,但却在64位系统上运行,可以用file
命令查看:
$file lib/native/libhadoop.so.1.0.0
lib/native/libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=ed024ac48c0f542fa36ddc918a75c51e1c647424, not stripped
我下载的版本是2.70的,默认就是64位的了,没有问题。
最后将本地库加入环境变量:
export JAVA_LIBRARY_PATH=/path/to/hadoop-native-libs
2.2. 问题二
问题如下:
java.io.IOException: Cannot initialize Cluster. Please check your configuration for mapreduce.framework.name and the correspond server addresses.
原因是在教程的mapred-site.xml(配置第5步)中配置把yarn写成了Yarn, 改成小写的就可以了。
2.3 问题三
问题如下:
Container launch failed for container_1435914330979_0007_01_000002 : org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException: The auxService:mapreduce_shuffle does not exist
解决方法是在yarn-site.xml中加入:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>