了解了什么是Hadoop之后,让我们在单机上启动Hadoop:
这篇文章包含在ubuntu上安装Hadoop的说明。 这是Hadoop安装的快速分步教程。 在这里,您将获得以独立模式 (单节点集群)安装Hadoop所需的所有命令及其说明, 伪分布式模式下的Hadoop (单节点群集)和分布式模式下的Hadoop (多节点群集)。
本教程的主要目标是启动并运行“简单的” Hadoop安装,以便您可以试用该软件并了解更多信息。
本教程已经过测试:
- Ubuntu Linux(10.04 LTS)
- Hadoop 0.20.2
先决条件:
安装Java:
推荐将Java 1.6.x(Sun Java或Open Java)用于Hadoop
1.将Canonical合作伙伴存储库添加到您的apt存储库中:
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
2.更新源列表
$ sudo apt-get update
3.安装sun-java6-jdk
$ sudo apt-get install sun-java6-jdk
4.安装后,快速检查Sun的JDK是否正确设置:
user@ubuntu:~# java -version
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)
添加专用的Hadoop系统用户:
我们将使用专用的Hadoop用户帐户来运行Hadoop。 虽然这不是必需的,但建议这样做,因为它有助于将Hadoop安装与同一计算机上运行的其他软件应用程序和用户帐户分开(请考虑:安全性,权限,备份等)
$ sudo adduser hadoop_admin
登录到hadoop_admin用户:
user@ubuntu:~$ su - hadoop_admin
Hadoop安装:
$ cd /usr/local
$ sudo tar xzf hadoop-0.20.2.tar.gz
$ sudo chown -R hadoop_admin /usr/local/hadoop-0.20.2
定义JAVA_HOME:
编辑配置文件/usr/local/hadoop-0.20.2/conf/hadoop-env.sh并设置JAVA_HOME:
导出JAVA_HOME =要成为Java安装根目录的路径(例如:/ usr / lib / jvm / java-6-sun)
$ vi conf/hadoop-env.sh
进入您的hadoop安装目录(HADOOP_HOME,即/usr/local/hadoop-0.20.2/):
$ bin/hadoop
它将生成以下输出:
Usage: hadoop [--config confdir] COMMAND
where COMMAND is one of:
namenode -format format the DFS filesystem
secondarynamenode run the DFS secondary namenode
namenode run the DFS namenode
datanode run a DFS datanode
dfsadmin run a DFS admin client
mradmin run a Map-Reduce admin client
fsck run a DFS filesystem checking utility
fs run a generic filesystem user client
balancer run a cluster balancing utility
jobtracker run the MapReduce job Tracker node
pipes run a Pipes job
tasktracker run a MapReduce task Tracker node
job manipulate MapReduce jobs
queue get information regarding JobQueues
version print the version
jar <jar> run a jar file
distcp <srcurl> <desturl> copy file or directories recursively
archive -archiveName NAME <src>*<dest> create a hadoop archive
daemonlog get/set the log level for each daemon
or
CLASSNAME run the class named CLASSNAME
Most commands print help when invoked w/o parameters:
独立模式下的Hadoop安装已完成……。!!!!!!!
现在运行一些示例:
1.运行经典Pi示例:
$ bin/hadoop jar hadoop-*-examples.jar pi 10 100
2.运行grep示例:
$ mkdir input
$ cp conf/*.xml input
$ bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+'
$ cat output/*
3.运行字数示例:
$ mkdir inputwords
$ cp conf/*.xml inputwords
$ bin/hadoop jar hadoop-*-examples.jar wordcount inputwords outputwords
如果发现任何错误,请访问Hadoop故障排除
在独立模式下运行Hadoop之后,让我们以伪分布式模式 (单节点集群)启动Hadoop :
配置SSH:
Hadoop需要SSH访问权限来管理其节点,即远程计算机和本地计算机。 因此,对于我们的Hadoop单节点设置,我们需要为hadoop_admin用户配置对localhost的SSH访问
user@ubuntu:~$ su - hadoop_admin
hadoop_admin@ubuntu:~$ sudo apt-get install openssh-server openssh-client
hadoop_admin@ubuntu:~$ ssh-keygen -t rsa -P ""
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop_admin/.ssh/id_rsa):
Created directory '/home/hadoop_admin/.ssh'.
Your identification has been saved in /home/hadoop_admin/.ssh/id_rsa.
Your public key has been saved in /home/hadoop_admin/.ssh/id_rsa.pub.
The key fingerprint is:
9b:82:ea:58:b4:e0:35:d7:ff:19:66:a6:ef:ae:0e:d2 hadoop_admin@ubuntu
The key's randomart image is:
[...snipp...]
hadoop_admin@ubuntu:~$
启用SSH访问本地计算机并使用ssh连接
$ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
$ ssh localhost
The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is e7:89:26:49:ae:02:30:eb:1d:75:4f:bb:44:f9:36:29.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
Linux ubuntu 2.6.32-22-generic #33-Ubuntu SMP Wed Apr 30 13:27:30 UTC 2010 i686 GNU/Linux
Ubuntu 10.04 LTS
[...snipp...]
$
编辑配置文件:
$ vi conf/core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp/hadoop-${user.name}</value>
</property>
</configuration>
如果提供其他路径,请确保该目录中的hadoop_admin用户具有读写权限(sudo chown hadoop_admin / your / path)
$ vi conf/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
$ vi conf/mapred.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
格式化名称节点:
$ /hadoop/bin/hadoop namenode -format
它将生成以下输出:
$ bin/hadoop namenode -format
10/05/10 16:59:56 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = ubuntu/127.0.1.1
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 0.20.2
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20 -r 911707; compiled by 'chrisdo' on Fri Feb 19 08:07:34 UTC 2010
************************************************************/
10/05/10 16:59:56 INFO namenode.FSNamesystem: fsOwner=hadoop_admin,hadoop
10/05/08 16:59:56 INFO namenode.FSNamesystem: supergroup=supergroup
10/05/08 16:59:56 INFO namenode.FSNamesystem: isPermissionEnabled=true
10/05/08 16:59:56 INFO common.Storage: Image file of size 96 saved in 0 seconds.
10/05/08 16:59:57 INFO common.Storage: Storage directory .../.../dfs/name has been successfully formatted.
10/05/08 16:59:57 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at ubuntu/127.0.1.1
************************************************************/
$
启动单节点集群:
$ /bin/start-all.sh
它将生成以下输出:
hadoop_admin@ubuntu:/usr/local/hadoop$ bin/start-all.sh
starting namenode, logging to /usr/local/hadoop/bin/../logs/hadoop-hadoop-namenode-ubuntu.out
localhost: starting datanode, logging to /usr/local/hadoop/bin/../logs/hadoop-hadoop-datanode-ubuntu.out
localhost: starting secondarynamenode, logging to /usr/local/hadoop/bin/../logs/hadoop-hadoop-secondarynamenode-ubuntu.out
starting jobtracker, logging to /usr/local/hadoop/bin/../logs/hadoop-hadoop-jobtracker-ubuntu.out
localhost: starting tasktracker, logging to /usr/local/hadoop/bin/../logs/hadoop-hadoop-tasktracker-ubuntu.out
hadoop_admin@ubuntu:/usr/local/hadoop$
检查jps是否正在运行预期的Hadoop进程
$ jps
14799 NameNode
14977 SecondaryNameNode
15183 DataNode
15596 JobTracker
15897 TaskTracker
伪分布式模式下的Hadoop安装已完成……。!!!!!!!
停止单节点集群:
$ /bin/stop-all.sh
它将生成以下输出:
$ bin/stop-all.sh
stopping jobtracker
localhost: stopping tasktracker
stopping namenode
localhost: stopping datanode
localhost: stopping secondarynamenode
$
您可以在oder中运行与独立模式下相同的示例集,以检查安装是否成功
基于Web的NameNode接口
http://本地主机:50070
基于Web的JobTracker界面 http://本地主机:50030 基于Web的TaskTracker界面 http://本地主机:50060
在以独立模式运行Hadoop之后,让我们以分布式模式 (多节点集群)启动Hadoop。
先决条件:在分布式模式下启动hadoop之前,必须在伪分布式模式下设置hadoop,并且至少需要两台计算机,其中一台用于主服务器,另一台用于从服务器(您可以在一台计算机上创建多台虚拟机)。
命令 | 描述 |
$ bin / stop-all.sh | 在群集中的所有计算机(主服务器和从服务器)上运行此cmd |
$ vi / etc / hosts | 然后输入 IP添加主机(例如:192.168.0.1主机) IP添加从站(例如:192.168.0.2从站) 在群集中的所有计算机(主服务器和从服务器)上运行此cmd |
$ ssh-copy-id -i $ HOME / .ssh / id_rsa.pub从属 | 设置无密码的SSH ( 在所有计算机上,您必须使用相同的用户名登录 ) 在master上运行此cmd |
要么 $ cat .ssh / id_rsa.pub 然后将其内容复制到 | 我们还可以手动设置无密码的ssh |
$ vi conf / master 然后输入master | 在master上运行此cmd |
$ vi conf /从属 然后输入slave | 在群集中的所有计算机(主服务器和从服务器)上运行此cmd |
然后输入: <属性> <name> fs.default.name </ name> <value> hdfs:// master:54310 </ value> </ property> | 在群集中的所有计算机(主服务器和从服务器)上运行此cmd |
然后输入: <属性> <name> mapred.job.tracker </ name> <value> master:54311 </ value> </ property> | 在群集中的所有计算机(主服务器和从服务器)上运行此cmd |
$ vi conf / hdfs-site.xml 然后输入: <属性> <name> dfs.replication </ name> <value> 2 </ value> </ property> | 在群集中的所有计算机(主服务器和从服务器)上运行此cmd |
$ vi conf / mapred-site.xml 然后输入: <属性> <name> mapred.local.dir </ name> <value> $ {hadoop.tmp.dir} / mapred / local </ value> <属性> <name> mapred.map.tasks </ name> <value> 20 </ value> </ property> <属性> <name> mapred.reduce.tasks </ name> <value> 2 </ value> | 编辑配置文件mapred-site.xml 在master上运行此cmd |
$ bin / start-dfs.sh | 启动多节点集群。 首先,启动HDFS守护程序。 namenode守护程序在主服务器上启动,而datanode守护程序在所有从属服务器上启动 在master上运行此cmd |
$ jps | 14799 NameNode 15314秒 在master上运行此cmd |
$ jps | 15183数据节点 在所有奴隶上运行此cmd |
$ bin / start-mapred.sh | MapReduce守护程序已启动:jobtracker在主服务器上启动,而tasktracker守护程序在所有从服务器上启动 在master上运行此cmd |
$ jps | 16017跳 14799 NameNode 15596 JobTracker 在master上运行此cmd |
$ jps | 15183数据节点 15897 TaskTracker 在所有奴隶上运行此cmd |
恭喜,Hadoop安装完成 | |
http:// localhost:50070 / | 基于Web的名称节点界面 |
http:// localhost:50030 / | 基于Web的作业跟踪器界面 |
现在运行一些示例 | |
$ bin / hadoop jar hadoop-*-examples.jar pi 10 100 | 运行pi示例 |
$ bin / hadoop dfs -put conf输入 $ bin / hadoop jar hadoop-*-examples.jar grep输入输出'dfs [az。] +' $ bin / hadoop dfs -cat输出/ * | 运行grep示例 |
$ bin / hadoop dfs -put conf输入字 $ bin / hadoop jar hadoop-*-examples.jar字数输入词输出词 $ bin / hadoop dfs -cat outputwords / * | 运行wordcount示例 |
$ bin / stop-mapred.sh $ bin / stop-dfs.sh | 在master上运行此cmd |