在Ubuntu上安装Hadoop(单机模式)

最近开始学习Hadoop,在这里记录一下学习的过程。

    Hadoop是一个用Java编写的用于运行与物理集群中的框架,吸收了GFS和mapreduce编程模型的特性。Hadoop的HDFS是一个高容错的分布式文件系统,并且它被设计运行于低成本的硬件上,能够提供很大的数据吞吐量,很适合那些数据量很大的应用程序。

    接下来,开始准备安装hadoop。我用的操作系统是 ubuntu 12.10 server,hadoop的版本是1.2.0。

安装准备

JDK 6

Hadoop需要在JDK1.5以上的环境下才能运行,目前推荐使用JDK 6 。


$ sudo apt-get update
$ sudo apt-get install openjdk-6-jdk

安装完成之后,文件会被放置在 /usr/lib/jvm/java-6-openjdk-amd64 这个路径下。

配置SSH


Hadoop需要用SSH来管理它的节点。针对单机的情况,我们需要配置SSH让运行hadoop的用户能够登录本机。

首先,我们需要为运行hadoop的用户生成一个SSH key:

$ ssh-keygen -t rsa -P ""
然后,让你可以通过新生成的key来登录本地机器。
$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
准备结束,下面开始安装hadoop。

Hadoop

在hadoop官网上下载 1.2.0 版本的软件,解压,然后把文件放到 /usr/local/ 路径下:

$ tar -zxvf hadoop-1.2.0.tar.gz
$ mv hadoop-1.2.0 hadoop
$ cp -r hadoop/ /usr/local/
接下来开始设置一些环境变量,需要在 ~/.bashrc 文件里面添加一下内容:
# Set Hadoop-related environment variables
export HADOOP_HOME=/usr/local/hadoop

# Set JAVA_HOME (we will also configure JAVA_HOME directly for Hadoop later on)
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64

# 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"

lzohead () {
    hadoop fs -cat $1 | lzop -dc | head -1000 | less
}

# Add Hadoop bin/ directory to PATH
export PATH=$PATH:$HADOOP_HOME/bin
 在修改完成后保存,重新登录,相应的环境变量就配置好了。

接下来开始配置Hadoop相关的东西,首先来看张图,了解下HDFS的结构:


配置

hadoop-env.sh

在这个配置文件里,你只需要配置 JAVA_HOME 这个环境变量就行了,添加以下内容:

export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64

conf/hdfs-site.xml

在这里需要配置hadoop存放数据文件的路径和hadoop监听的端口,首先来新建目录:

$ sudo mkdir -p /app/hadoop/tmp
$ sudo chmod 750 /app/hadoop/tmp
然后在 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>
在 conf/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>

通过 NameNode 来格式化 HDFS 文件系统

在配置结束后,需要来对 HDFS 进行格式化,运行一下命令:

$ /usr/local/hadoop/bin/hadoop namenode -format
会输出一下内容:
root@master:~# hadoop namenode -format
Warning: $HADOOP_HOME is deprecated.

13/06/02 10:22:41 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = master/192.168.214.128
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 1.2.0
STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1479473; compiled by 'hortonfo' on Mon May  6 06:59:37 UTC 2013
STARTUP_MSG:   java = 1.6.0_27
************************************************************/
Re-format filesystem in /app/hadoop/tmp/dfs/name ? (Y or N) y
Format aborted in /app/hadoop/tmp/dfs/name
13/06/02 10:22:48 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at master/192.168.214.128
************************************************************/
下面就来运行hadoop:
$ /usr/local/hadoop/bin/start-all.sh
这个命令会启动机器上的 namenode,datanode,jobtracker 和 tasktracker

有一个简单的工具来检查hadoop的运行状况,jps:

$ jps
4590 TaskTracker
4368 JobTracker
4270 SecondaryNameNode
4642 Jps
4028 DataNode
3801 NameNode
你也可以通过 netstat 命令来检查 hadoop 是否正常运行:
$ sudo netstat -plten | grep java
tcp   0  0 0.0.0.0:50070   0.0.0.0:*  LISTEN  1001  9236  2471/java
tcp   0  0 0.0.0.0:50010   0.0.0.0:*  LISTEN  1001  9998  2628/java
tcp   0  0 0.0.0.0:48159   0.0.0.0:*  LISTEN  1001  8496  2628/java
tcp   0  0 0.0.0.0:53121   0.0.0.0:*  LISTEN  1001  9228  2857/java
tcp   0  0 127.0.0.1:54310 0.0.0.0:*  LISTEN  1001  8143  2471/java
tcp   0  0 127.0.0.1:54311 0.0.0.0:*  LISTEN  1001  9230  2857/java
tcp   0  0 0.0.0.0:59305   0.0.0.0:*  LISTEN  1001  8141  2471/java
tcp   0  0 0.0.0.0:50060   0.0.0.0:*  LISTEN  1001  9857  3005/java
tcp   0  0 0.0.0.0:49900   0.0.0.0:*  LISTEN  1001  9037  2785/java
tcp   0  0 0.0.0.0:50030   0.0.0.0:*  LISTEN  1001  9773  2857/java
停止运行 hadoop ,运行以下命令:
$ /usr/local/hadoop/bin/stop-all.sh
那么 hadoop 单机模式安装就完成了,下一篇来介绍多物理机模式的安装。

转载于:https://my.oschina.net/fwgisbug/blog/135095

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值