主要分为以下几个步骤:
安装java环境,最好为sun的,据说openjdk会有问题。
安装hadoop
配置hadoop环境变量
设置ssh
配置hadoop为单节点【伪分布式】模式
=====================================start===========================================
1.安装sun的java。并记录环境变量。
我这里使用的是jdk1.7.0_04,安装在/usr/lib/jvm/jdk1.7.0_04/。
具体请参考:http://blog.csdn.net/hello_world_2012/article/details/8606784
2.创建可以使用root权限的用户。
为了使用方便,这里不再创建新用户而是直接使用当前的用户yu【可以使用sudoxx即可】。
3.安装hadoop1.0.4
a.在hadoop官网下载安装包:hadoop-1.0.4.tar.gz
b.将安装文件解压到/usr/hadoop1.0.4
sudo tar -zxvf hadoop-1.0.4.tar.gz -C /usr
c.修改hadoop文件夹的权限,保证能够正常访问:
sudo chown -hR yu /usr/hadoop-1.0.4
(这一步也可以暂时不做)
4.配置hadoop的环境变量
a.修改profile文件
sudo vi /etc/profile
b.在文件末尾加入如下几行:
# for java
export CLASSPATH=.:/usr/lib/jvm/jdk1.7.0_04/lib:/usr/lib/jvm/jdk1.7.0_04/jre/lib:$CLASSPATH
export PATH=.:/usr/lib/jvm/jdk1.7.0_04/bin:/usr/lib/jvm/jdk1.7.0_04/jre/bin:/usr/hadoop-1.0.4/bin:$PATH
# for hadoop
export PATH=$PATH:/usr/hadoop-1.0.4/bin
说明:.表示当前目录,:表示分割符,windows下是;。
5.设置ssh
hadoop需要在无密码情况下使用ssh登录,所以需要将ssh设置成无密码登录。
a.保证网络畅通,安装ssh:
sudo apt-get install openssh-server
验证是否可以无密码登录:
ssh localhost
如果出现无法建立链接,则表示当前不能无密码登录。
b.执行如下命令:
ssh-keygen -t rsa –P
cat /home/yu/.ssh/id_rsa.pub >> /home/yu/.ssh/authorized_keys
sudo /etc/init.d/ssh reload
(注1:此语句网上文档为ssh-keygen-t rsa -P "" ,效果一样
注2:此语句执行后会要你填写key的保存位置,直接照着系统给出的那个默认位置填,我的为"/home/yu/.ssh/id_rsa")
c.修改权限
chmod 700 ~/.ssh
chmod 644 ~/.ssh/authorized_keys
到此,ssh设置完成。打开新的窗口,输入ssh localhost,显示登录成功的信息。
6.配置hadoop为单节点【伪分布式】模式
a.配置hadoop-env.sh
sudo gedit conf/hadoop-env.sh
(打开后在文档的上部某行有“#exportJAVA_HOME=...”字样的地方,去掉“#”,然后在等号后面填写你的jdk路径,"export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_04")
b.配置conf目录下的core-site.xml
sudo gedit conf/core-site.xml
(打开后标签<configuration></configuration>中是空的,所以在空的地方加入如下配置)
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/yu/tmp</value>
</property>
c.配置conf目录下的mapred-site.xml
sudo gedit conf/mapred-site.xml
(打开后标签<configuration></configuration>中也是空的,添加如下配置)
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
运行测试:
1、格式化namenode(首次运行必须,以后运行跳过)
hadoop namenode -format
2、启动hadoop
a.修改hadoop文件夹的所有者,保证能够正常访问:
sudo chown -hR yu /usr/hadoop-1.0.4
(如果在第三步已经修改了,这里就不用了)
b.启动hadoop
start-all.sh
c.验证是否正常启动
jps
如果正确的话,这时会显示已经启动的项目:
yu@yu-PC:/usr/hadoop-1.0.4$jps
13624Jps
13554TaskTracker
13293JobTracker
13204SecondaryNameNode
12932DataNode
12674NameNode
如果没有正常启动,先关闭所有守护进程stop-all.sh,然后再根据提示信息重新启动。
3、跑wordcount
a.准备一个文本文件,
sudo vi /tmp/test.txt
随意输入一些单词,然后保存关闭退出。
b.将准备的测试文件上传到dfs文件系统中的firstTest目录下
hadoop dfs -copyFromLocal /tmp/test.txt firstTest
(注:如dfs中不包含firstTest目录的话就会自动创建一个,关于查看dfs文件系统中已有目录的指令为"hadoopdfs -ls")
c.执行wordcount
hadoop jar hadoop-examples-1.0.4.jar wordcount firstTest result
注:hadoop-examples-1.0.4.jar会跟版本有关系,具体的名字可查看安装目录下的文件。
d.查看结果
hadoop dfs -cat result/part-r-00000
(注:结果文件默认是输出到一个名为“part-r-*****”的文件中的,可用指令“hadoopdfs -ls result”查看result目录下包含哪些文件)
至此,hadoop伪分布式模式搭建完成。
参考并致谢:
1、http://vampire1126.iteye.com/blog/891693
2、http://blog.csdn.net/shuhuai007/article/details/8298814
3、http://blog.csdn.net/computer055maxi/article/details/6076416