安装前要做一件事——添加一个名为hadoop到系统用户,专门用来做Hadoop测试。
~$ sudo addgroup hadoop
~$ sudo adduser --ingroup hadoop hadoop
现在只是添加了一个用户hadoop,它并不具备管理员权限,因此我们需要将用户hadoop添加到管理员组:
~$ sudo usermod -aG adminhadoop
好了,现在可以开始安装 :-)
1.安装ssh
由于Hadoop用ssh通信,作为一个安全通信协议,使用时需要密码,因此我们要设置成免密码登录(除非你的手真的非常痒,每次都喜欢输入密码,一两台机器还可以,要是几十上百台呢?没密码担心安全问题?自己去看openssh吧,记得要弄懂里面的加密算法哦。)
~$ sudo apt-get installopenssh-server
生成私钥和公钥:
hadoop@scgm-ProBook:~$ ssh-keygen -trsa -P ""
因为我已有私钥,所以会提示是否覆盖当前私钥。第一次操作时会提示输入密码,按Enter直接过,这时会在~/home/{username}/.ssh下生成两个文件:id_rsa和id_rsa.pub,前者为私钥,后者为公钥,现在我们将公钥追加到authorized_keys中(authorized_keys用于保存所有允许以当前用户身份登录到ssh客户端用户的公钥内容):
~$ cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys
现在可以登入ssh确认以后登录时不用输入密码:
~$ ssh localhost
登出:
~$ exit
第二次登录:
~$ ssh localhost
登出:
~$ exit
这样以后登录就不用输入密码了:-)
2.安装Java
hadoop是用Java写的。
~$ sudo apt-get purge java-gci-compat
~$ sudo add-apt-repository "deb http://archive.canonical.com/ lucidpartner"
~$ sudo apt-get update
~$ sudo apt-get install sun-java6-jdk sun-java6-plugin
~$sudo update-java-alternatives -s java-6-sun
3.下载并安装Hadoop
到这里下载Hadoop,解压并放到你希望的目录中。我是放到/usr/local/hadoop
~$ sudo mv/home/scgm/下载/hadoop-0.20.2/usr/local/hadoop
要确保所有的操作都是在用户hadoop下完成的:
~$ sudo chown -Rhadoop:hadoop /usr/local/hadoop
4.设定hadoop-env.sh
进入hadoop目录,打开conf目录下到hadoop-env.sh,添加以下信息:
exportJAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.26 (视你机器的java安装路径而定)
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:/usr/local/hadoop/bin
5.设定*-site.xml
这里需要设定3个文件:core-site.xml,hdfs-site.xml,mapred-site.xml
core-site.xml:
hdfs-site.xml:
mapred-site.xml:
6.格式化HDFS:
通过以上步骤,我们已经设定好Hadoop单机测试到环境,接着就是启动Hadoop到相关服务,格式化namenode,secondarynamenode,tasktracker:
hadoop@scgm-ProBook:/usr/local/hadoop$ source
/usr/local/hadoop/conf/hadoop-env.sh
hadoop@scgm-ProBook:/usr/local/hadoop$ hadoop namenode-format
7.启动Hadoop:
接着执行start-all.sh来启动所有服务,包括namenode,datanode:
hadoop@scgm-ProBook:/usr/local/hadoop$ cd bin
hadoop@scgm-ProBook:/usr/local/hadoop/bin$ start-all.sh
8.检查运行状态
所有的设置已完成,Hadoop也启动了,现在可以通过下面的操作来查看服务是否正常:
http://localhost:50030/ - Hadoop 管理介面
http://localhost:50060/ - Hadoop Task Tracker 状态
http://localhost:50070/ - Hadoop DFS 状态
Hadoop管理界面:
Hadoop TaskTracker状态:
Hadoop DFS状态:
结语
今天我们试着在Ubuntu上搭建Hadoop,而且成功了!鼓掌!接下来我们可以写些简单的应用,看看能不能在Hadoop上运行,是不是很期待?不过今天太累了,这事得明天才能做。
本文参考修改自http://trac.nchc.org.tw/cloud/wiki/Hadoop_Lab1,特此感谢。
实在是手痒,还是试着运行了一个application——grep,一个单词计数器。切换到Hadoop安装目录,执行下面到指令:
~$ ./bin/hadoop fs –put confinput
~$ ./bin/hadoop jarhadoop-*-examples.jar grep input output 'dfs[a-z.]+'
图中可以看出,以上两条命令到输出说明了map和reduce过程
前两条命令还在HDFS中生成两个目录,“input”和”output”。可以通过以下命令查看:
~$ ./bin/hadoop fs -ls
查看HDFS中已经输出的文件。它以键-值对的形式列出以“ha*”开头的单词出现到次数。
~$ ./bin/hadoop fs -catoutput/*
现在可以访问JobTracker站点查看完成的作业日志:
OK,今天到此结束 :-)