Hadoop 初体验

 

Hadoop 是一个基于谷歌发表的几篇论文而开发的一个分布式系统基础架构,用户可在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop现在已经成了大数据的代名词。也就是说,现在如果要处理大数据,Hadoop是首要选择。所以学好Hadoop是非常实用的。

 

Hadoop 目前大的版本分为1和2,对于初学者来说,先学习 Hadoop 1.x 比较容易上手,相比 2.x会简单不少。

 

环境

Ubuntu 16.04

openjdk-8

Hadoop-1.2.1

 

安装

由于 Hadoop 是用 Java 开发的,所以要依赖 JDK,首先要安装 JDK,并配置JDK的环境变量。

安装 Java 命令:

sudo apt-get install openjdk-8-jdk

如果出现一下错误:

E: 软件包 sun-java6-jre 没有可供安装的候选者

则执行一下命令:

sudo add-apt-repository ppa:openjdk-r/ppa

sudo apt-get update

之后再执行安装命令。

JDK 安装完成后需要配置环境变量,编辑/etc/profile,加入一下内容:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-i386
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$PATH

 

安装Hadoop。

下载 Hadoop 的安装包 hadoop-1.2.1.tar.gz,解压后放到/opt/目录下

接着是对 Hadoop 配置:

 hadoop-env.sh

修改JAVA_HOME 的路径

 

core-site.xml

初始是空文件,加入以下内容:

<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop</value>
</property>


<property>
<name>dfs.name.dir</name>
<value>/hadoop/name</value>
</property>


<property>
<name>fs.default.name</name>
<value>hdfs://tang:9000</value>
</property>

 

hdfs-site.xml

加入以下内容:

<property>
<name>dfs.data.dir</name>
<value>/hadoop/data</value>
</property>

 

mapred-site.xml 

加入以下内容:

<property>
<name>mapred.job.tracker</name>
<value>tang:9001</value>
</property>

 

配置好后,加入 Hadoop 的环境变量

export HADOOP_HOME=/opt/hadoop-1.2.1

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$PATH

 

执行 source /etc/profile 让配置的环境变量立即生效。

输入 hadoop 看到 hadoop 的参数说明,表明配置成功了。

 

接着切换到 hadoop/bin 下,执行 hadoop namenode -format 进行格式化,如果出现以下错误:

hadoop java.io.IOException: while running namenode -format

12/07/03 17:03:56 ERROR namenode.NameNode: java.io.IOException: Cannot create directory /your/path/to/hadoop/tmp/dir/hadoop-hadoop/dfs/name/current

需要检查一下刚才在几个配置文件中定义的路径是否存在、当前用户是否有权限访问。

格式化成功后,切换到/hadoop/bin下,执行 start-all.sh

如果出现以下错误:

ssh: connect to host localhost port 22: Connection refused
可能的原因是ssh server没装,查看方法:

ps -e |grep ssh

如果没有sshd,说明还没有安装ssh server

解决方案:

sudo apt-get install openssh-server
接着再运行start-all.sh就可以了。

再运行 jfs,观察以下几个内容是否存在。

3542 TaskTracker
3334 SecondaryNameNode
4058 Jps
3931 JobTracker
3677 NameNode
3182 DataNode

如果都存在,表明hadoop启动成功。

 

 

运行 hadoop fs -ls / 时,出现以下错误:

14/07/29 13:25:35 INFO ipc.Client: Retrying connect to server: centhost.centdomain/10.110.30.30:9000. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)

原因是没有启动 hadoop,切换到$HADOOP_HOME/bin 下,运行 start-all.sh即可。

出现以下错误

s: unknown host: tang

检查一下 /etc/hosts、 /etc/hostname 下是否存在该主机。

 

运行 jps 时没有出现datanode,可能的原因是:

当前用户是否有配置文件中指定的文件夹打操作权限。

 

posted @ 2017-05-12 13:38  ivantang  阅读(371)  评论(0编辑  收藏  举报