我们对Hadoop有所了解了,特别是昨天对MapReduce的部分源码进行了分析,知道了MapReduce是怎么运作的,是不是手痒了,很想自己安装Hadoop吧(其实是我自己手痒了…)?那我们今天就先不分析源码,我们就来安装Hadoop(单机集群模式)。以下所有操作均在Ubuntu 11.04下完成。
安装前要做一件事——添加一个名为hadoop到系统用户,专门用来做Hadoop测试。
~$ sudo addgroup hadoop
~$ sudo adduser –ingroup hadoop hadoop
现在只是添加了一个用户hadoop,它并不具备管理员权限,因此我们需要将用户hadoop添加到管理员组:
~$ sudo usermod -aG admin hadoop
好了,现在可以开始安装 🙂
1.安装ssh
由于Hadoop用ssh通信,作为一个安全通信协议,使用时需要密码,因此我们要设置成免密码登录(除非你的手真的非常痒,每次都喜欢输入密码,一两台机器还可以,要是几十上百台呢?没密码担心安全问题?自己去看openssh吧,记得要弄懂里面的加密算法哦。)
~$ sudo apt-get install openssh-server
生成私钥和公钥:
hadoop@www.linuxidc.com:~$ ssh-keygen -t rsa -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/ lucid partner”
~$ 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 -R hadoop:hadoop /usr/local/hadoop
4.设定hadoop-env.sh
进入hadoop目录,打开conf目录下到hadoop-env.sh,添加以下信息:
export JAVA_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@www.linuxidc.com:/usr/local/hadoop$ source
/usr/local/hadoop/conf/hadoop-env.sh
hadoop@www.linuxidc.com:/usr/local/hadoop$ hadoop namenode -format
7.启动Hadoop:
接着执行start-all.sh来启动所有服务,包括namenode,datanode:
hadoop@www.linuxidc.com:/usr/local/hadoop$ cd bin
hadoop@www.linuxidc.com:/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上运行,是不是很期待?
实在是手痒,还是试着运行了一个application——grep,一个单词计数器。切换到Hadoop安装目录,执行下面到指令:
~$ ./bin/hadoop fs –put conf input
~$ ./bin/hadoop jar hadoop-*-examples.jar grep input output ‘dfs[a-z.]+’
图中可以看出,以上两条命令到输出说明了map和reduce过程
前两条命令还在HDFS中生成两个目录,“input”和”output”。可以通过以下命令查看:
~$ ./bin/hadoop fs -ls
查看HDFS中已经输出的文件。它以键-值对的形式列出以“ha*”开头的单词出现到次数。
~$ ./bin/hadoop fs -cat output/*
现在可以访问JobTracker站点查看完成的作业日志:
OK。