在Ubuntu Linux上安装Apache Hadoop

Hadoop是Apache软件基金会所研发的分布式系统框架。其中,MapReduce和HDFS是Hadoop的两大核心模块。MapReduce是用于大规模数据集并行计算的编程模型。HDFS是面向大规模数据集的分布式文件系统。本文的目的是采用伪分布模式,在Ubuntu Linux上安装Apache Hadoop。


0.准备

如果安装Hadoop是出于学习目的,建议首先安装VMware Workstation。VMware Workstation是一款功能强大的桌面虚拟计算机软件,通常称为“虚拟机”。在虚拟机中,需要安装以下软件:

Ubuntu Linux 12.04 LTS(根据需求选择32位或者64位,本文选用64位)

hadoop -1.2.1.tar.gz

jdk-7u40-linux-x64.tar.gz

Eclipse IDE for JAVA EE Developers

hadoop-eclipse-plugin-1.2.1.jar


1.安装JDK

Hadoop是由Java语言编写,因此安装Hadoop之前需要安装JDK。本文将JDK的安装包下载到了/home/hduser/Downloads目录,并计划安装到/usr/lib目录,该安装目录可以任意指定。然后,用tar命令解压。具体操作如下,打开Ubuntu的终端,输入以下命令:

sudo cp /home/hduser/Downloads/jdk-7u40-linux-x64.tar.gz /usr/lib 
sudo tar xzf jdk-7u40-linux-x64.tar.gz /usr/lib 
sudo gedit /etc/profile

在/etc/profile文件的末尾添加以下代码:

export JAVA_HOME=/usr/lib/jdk1.7.0_40
export JRE_HOME=/usr/lib/jdk1.7.0_40/jre
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

保存退出/etc/profile后,使用source命令更新/etc/profile。使用java -version测试JDK是否安装成功。

source /etc/profile
java -version
如果返回下图所示的结果,那么表明JDK安装成功!


2.安装及配置SSH

Hadoop采用SSH协议。为了用户可以无密码登录,需要安装SSH并进行相应配置。如果使用CentOS,那么系统自带SSH,不需要另外安装。通过ssh localhost命令测试本机是否已安装了SSH。


如果返回上图所示的结果,那么表明本机没有安装SSH。通过在终端输入下面的命令安装SSH:

sudo apt-get install openssh-server
sudo /etc/init.d/ssh start
ps -e|grep ssh

如果返回下图所示的结果,那么表明SSH安装成功。

接下来对SSH进行配置。

ssh-keygen -t rsa -P ""

返回结果:


系统将生成rsa密钥对,分别是私钥id_rsa和公钥id_rsa.pub。

接下来,将公钥添加到authorized_keys中:

cd /home/hduser/.ssh
ls
cat id_rsa.pub >> authorized_keys
再次使用ssh localhost命令,输入yes,与上次相比,返回了不一样的输出结果:



3.安装Hadoop

在安装Hadoop之前,先创建一个名为hadoop的group。

sudo addgroup hadoop
sudo adduser --ingroup hadoop hduser

正如上述安装JDK那样,Hadoop的安装位置也可以任意指定。本文选择/usr/local/hadoop作为安装目录。将Hadoop安装包移动到该目录后解压出来,并修改文件夹的所有者。注意,这一步很重要,如果文件夹的所有者搞错了,将导致后续无法正常启动Hadoop

sudo cp /home/hduser/Downloads/hadoop-1.2.1.tar.gz /usr/local/hadoop
cd /usr/local/hadoop
sudo tar xzf hadoop-1.2.1.tar.gz
sudo chown -R hduser:hadoop hadoop-1.2.1
sudo gedit $HOME/.bashrc

将下面的代码添加到$HOME/.bashrc文件的末尾。

# Set Hadoop-related environment variables
export HADOOP_HOME=/usr/local/hadoop/hadoop-1.2.1

# Set JAVA_HOME (we will also configure JAVA_HOME directly for Hadoop later on)
export JAVA_HOME=/usr/lib/jdk1.7.0_40

# Some convenient aliases and functions for running Hadoop-related commands
unalias fs &> /dev/null
alias fs="hadoop fs"
unalias hls &> /dev/null
alias hls="fs -ls"

# If you have LZO compression enabled in your Hadoop cluster and
# compress job outputs with LZOP (not covered in this tutorial):
# Conveniently inspect an LZOP compressed file from the command
# line; run via:
#
# $ lzohead /hdfs/path/to/lzop/compressed/file.lzo
#
# Requires installed 'lzop' command.
#
lzohead () {
    hadoop fs -cat $1 | lzop -dc | head -1000 | less
}

# Add Hadoop bin/ directory to PATH
export PATH=$PATH:$HADOOP_HOME/bin
接下来,还需要配置hadoop-env.sh,con/*-site.xml等文件。打开conf/hadoop-env.sh,然后将
# The java implementation to use.  Required.
# export JAVA_HOME=/usr/lib/j2sdk1.5-sun
修改为:
# The java implementation to use.  Required.
export JAVA_HOME=/usr/lib/jdk1.7.0_40
正如这样:


Hadoop默认使用hadoop.tmp.dir来存放临时文件。建议自己建立一个目录来存放临时文件。

$ sudo mkdir -p /app/hadoop/tmp
$ sudo chown hduser:hadoop /app/hadoop/tmp
$ sudo chmod 750 /app/hadoop/tmp

如果想获得更高的安全性,请为目录设置750的权限。如果忘记了设置所有者以及权限,可能在格式化名称节点时遇到java.io.IOException错误。对于conf/core-site.xml,conf/mapred-site.xml,conf/hdfs-site.xml配置非常简单,只要在<configuration>...</configuration>键值对之间,将下面的代码粘贴进去就可以了。

conf/core-site.xml:

<property>
  <name>hadoop.tmp.dir</name>
  <value>/app/hadoop/tmp</value>
  <description>A base for other temporary directories.</description>
</property>

<property>
  <name>fs.default.name</name>
  <value>hdfs://localhost:54310</value>
  <description>The name of the default file system.  A URI whose
  scheme and authority determine the FileSystem implementation.  The
  uri's scheme determines the config property (fs.SCHEME.impl) naming
  the FileSystem implementation class.  The uri's authority is used to
  determine the host, port, etc. for a filesystem.</description>
</property>

conf/mapred-site.xml:

<property>
  <name>mapred.job.tracker</name>
  <value>localhost:54311</value>
  <description>The host and port that the MapReduce job tracker runs
  at.  If "local", then jobs are run in-process as a single map
  and reduce task.
  </description>
</property>
con/hdfs-site.xml:
<property>
  <name>dfs.replication</name>
  <value>1</value>
  <description>Default block replication.
  The actual number of replications can be specified when the file is created.
  The default is used if replication is not specified in create time.
  </description>
</property>

4.启动Hadoop

在首次启动Hadoop之前,需要对HDFS进行格式化。

/usr/local/hadoop/hadoop-1.2.1/bin/hadoop namenode -format

执行完毕之后,将返回下图所示的结果:


接着,让我们启动Hadoop吧!

/usr/local/hadoop/hadoop-1.2.1/bin/start-all.sh

执行完毕之后,将返回下图所示结果:


启动完毕,之后通过jps指令来查看Hadoop的状态:

cd /usr/local/hadoop/hadoop-1.2.1
jps
执行完毕之后,将返回下图所示结果:


通过netstat指令来查看Hadoop的端口:

sudo netstat -plten | grep java

关闭集群:

/usr/local/hadoop/hadoop-1.2.1/bin/stop-all.sh


5.安装与配置Eclipse

Eclipse的安装非常简单,将下载好的压缩包用tar命令解压出来就可以使用Eclipse,这里不再赘述。为了能够在Eclipse中查看HDFS和开发MapReduce程序,需要先安装一个插件hadoop-eclipse-plugin-1.2.1.jar。插件的安装方法也很简单,将jar包放到eclipse/plugin目录下即可。现在,让我们启动Eclipse看看吧。


点击Window菜单下的Preference后弹出一个对话框。在对话框的左侧点击Hadoop Map/Reduce选项,输入Hadoop的安装目录,本文的Hadoop安装目录是/usr/local/hadoop/hadoop-1.2.1。注意,在下方Console控制台选项卡的左侧,多了一个Map/Reduce Locations选项卡。在该选项卡的空白处右击,点击New Hadoop location。在弹出的对话框中,填入Map/Reduce master以及DFS master的host和port。这两个端口号在安装Hadoop时已经进行了配置,分别在hadoop-1.2.1/conf目录下的mapred-site.xml和core-site.xml两个文件中,注意别填反了。然后,点击Advanced parameters,从中找到hadoop.tmp.dir,填入临时目录,本文选择/app/hadoop/tmp,这个属性之前已经在core-site.xml进行了配置。再从Advanced parameters中找到fs.default.name,填入Hadoop集群的地址,本文的Hadoop集群地址是hdfs://localhost:54310,这个属性之前也已经在“core-site.xml”进行了配置。点击完成之后,就配置好了Eclipse。接下来,可以在Eclipse中新建一个Map/Reduce Project,尝试写一些简单的MapReduce程序。


至此,搭建开发环境的所有工作都已经完成。

Hope you enjoy it! 


6.参考资料


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值