锁定老帖子 主题:Hadoop环境搭建——单节点篇
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-01-22
最后修改:2011-05-03
自漫聊1.0发布以来,研究Hadoop也有一段时间了,目前环境已基本搭建好,规模为15台的小型集群,昨晚测试时是用wordcount统计一个1.2G的log文件,总耗时2分16秒,虽然测试文件不大,但其性能的优越性已经体现出来了。
闲话不多说了,进正题。
注:本文的环境搭建是针对双系统和linux系统的,而非win下的虚拟机!
流程: 装机阶段: 安装ubuntu,jdk和hadoop 创建一个名为hadoop的用户和用户组
配置阶段: 配置环境变量 创建ssh key 配置hadoop
运行测试阶段: 格式化namenode 启动hadoop 跑wordcount
准备: ubuntu 10.10 hadoop 0.21.0 jdk1.6.0_23 for linux
装机阶段:
1、安装ubuntu10.10 wubi的傻瓜式安装应该不用我多说了吧,在win下用虚拟光驱载入,然后执行.......另外补充下,安装时最好断开网络连接(我们是直接拔的网线),因为ubuntu安装过程中需要更新一些语言包之类的东西,那些东西与我们要做的事没什么关系,下载时间又长,所以建议不更新。
2、安装jdk1.6.0_23 有多种方法,此处只介绍一种 1、在usr下面新建一个文件夹Java,然后将jdk复制过来(也可直接mv过来) sudo mkdir /usr/Java sudo cp jdk的路径 /usr/Java
2、进入到Java目录下,改变文件权限为可执行 cd /usr/Java sudo chmod u+x jdk1.6.0_23.bin
3、执行安装 sudo ./jdk1.6.0_23.bin (现象为Unpacking....加一连串解压信息)
3、安装hadoop0.21.0 1、将hadoop0.21.0.tar.gz复制到usr下面的local文件夹内(也可mv) sudo cp hadoop的路径 /usr/local
2、进入到local目录下,解压hadoop0.21.0.tar.gz cd /usr/local sudo tar -xzf hadoop0.21.0.tar.gz
3、为了方便管理,将解压后的文件夹名改为hadoop sudo mv hadoop0.21.0 hadoop
4、创建一个名为hadoop的用户和用户组 1、创建一个名为hadoop的用户组 sudo addgroup hadoop
2、创建一个名为hadoop的用户,归到hadoop用户组下 sudo adduser --ingroup hadoop hadoop (注1:前一个hadoop为用户组名,后面的是用户名,之所以名字一样是为了方便统一管理 注2:执行后会有一些信息需要填写,可以不填,都敲回车,用系统默认的即可,大概5个吧)
3、用gedit打开etc下的sudoers文件 sudo gedit /etc/sudoers
4、在 root ALL=(ALL) ALL 下面添加如下一行,然后保存关闭gedit hadoop ALL=(ALL) ALL (注1:网上有文档上是说先切换到root用户,然后修改sudoers的权限,再打开添加 hadoop ALL=(ALL) ALL ,然后再将权限改回为只读,这样就要特别注意一 定要将权限改回为只读,不然“sudo”命令就无法使用了,很悲剧的说 注2:添加 hadoop ALL=(ALL) ALL 的意义在于能让hadoop用户使用“sudo”命令 )
配置阶段:
1、配置环境变量 1、用gedit打开etc下的profile文件 sudo gedit /etc/profile
2、在文件最后加入如下几行 export CLASSPATH=.:/usr/Java/jdk1.6.0_23/lib:/usr/Java/jdk1.6.0_23/jre/lib:$CLASSPATH export PATH=.:/usr/Java/jdk1.6.0_23/bin:/usr/Java/jdk1.6.0_23/jre/bin:/usr/local/hadoop/bin:$PATH (注1:以上所有jre项都不是必需的,可以不要 注2:在win中环境变量的值是以“;”号隔开的,而这里是“:” 注3:等号后面有个“.”别丢了,它表示当前目录)
3、保存后关闭gedit,并重启机器 sudo reboot (注:网上也有说用source命令使环境变量立即生效的,但是本人在 实际操作时出了几次问题,所以建议重启机器最保险)
4、重启后用hadoop用户登录,验证配置是否成功 java -version (此语句执行后如显示了jdk版本的话说明配置成功,如果没有则需检查profile中路径是否正确) (注:最好是用hadoop用户登录,因为以下步骤都是以此为前提的)
2、创建ssh-key 1、确保网络通畅,然后装载ssh服务 sudo apt-get install openssh-server (注:如果此语句执行失败且结果为“....包被占用”的话,那么应该是ubuntu的“更新管理器”正在后台更新,你可以选择等待或者关闭更新,更新管理器在“系统”菜单中,具体位置忘了.....)
2、创建ssh-key,为rsa (网上文档中也有dsa的) ssh-keygen -t rsa --P (注1:此语句网上文档为 ssh-keygen -t rsa -P "" ,效果一样 注2:此语句执行后会要你填写key的保存位置,直接照着系统给出的那个默认位置填,也就是括号里的那个路径,如果全都照此文档操作的话那么括号中路径应该为"/home/hadoop/.ssh/id_rsa")
3、将此ssh-key添加到信任列表中,并启用此ssh-key cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys sudo /etc/init.d/ssh reload
3、配置hadoop 1、进入到hadoop目录下,配置conf目录下的hadoop-env.sh中的JAVA_HOME cd /usr/local/hadoop sudo gedit conf/hadoop-env.sh (打开后在文档的上部某行有“#export JAVA_HOME=...”字样的地方,去掉“#”, 然后在等号后面填写你的jdk路径,完全按此文档来的话应改为 "export JAVA_HOME=/usr/Java/jdk1.6.0_23" )
2、配置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/hadoop/tmp</value> </property>
3、配置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 (首次运行必需滴) 1、保证此时在hadoop目录下,如不在请先进入hadoop目录 cd /usr/local/hadoop
2、格式化namenode hadoop namenode -format
2、启动hadoop 1、修改hadoop文件夹的权限,保证hadoop用户能正常访问其中的文件 sudo chown -hR hadoop /usr/local/hadoop
2、启动hadoop bin/start-all.sh
3、验证hadoop是否正常启动 jps (此语句执行后会列出已启动的东西NameNode,JobTracker,SecondaryNameNode...如果NameNode没有成功启动的话就要先执行"bin/stop-all.sh"停掉所有东西,然后重新格式化namenode,再启动)
3、跑wordcount 1、准备需要进行wordcount的文件 sudo gedit /tmp/test.txt (打开后随便输入一些内容,如"mu ha ha ni da ye da ye da",然后保存退出)
2、将准备的测试文件上传到dfs文件系统中的firstTest目录下 hadoop dfs -copyFromLocal /tmp/test.txt firstTest (注:如dfs中不包含firstTest目录的话就会自动创建一个,关于查看dfs文件系统中已有目录的指令为"hadoop dfs -ls")
3、执行wordcount hadoop jar hadoop-mapred-example0.21.0.jar wordcount firstTest result (注:此语句意为“对firstTest下的所有文件执行wordcount,将统计结果输出到result文件夹中”,若result文件夹不存在则会自动创建一个)
4、查看结果 hadoop dfs -cat result/part-r-00000 (注:结果文件默认是输出到一个名为“part-r-*****”的文件中的,可用指令“hadoop dfs -ls result”查看result目录下包含哪些文件)
至此单节点环境搭建完成!
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-03-04
按照你的步骤走下来之后,在格式化namenode的时候出现下面的错误,求解答(我用的是Ubuntu10.4版本,hadoop0.21.0)
2011-3-3 20:32:23 org.apache.hadoop.hdfs.server.namenode.NameNode main 严重: java.lang.NoClassDefFoundError: org/apache/log4j/Level at org.apache.hadoop.mapred.JobConf.<clinit>(JobConf.java:343) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:247) at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1074) at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:88) at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:72) at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:125) at org.apache.hadoop.hdfs.server.namenode.BlockPlacementPolicy.getInstance(BlockPlacementPolicy.java:168) at org.apache.hadoop.hdfs.server.namenode.BlockManager.setConfigurationParameters(BlockManager.java:144) at org.apache.hadoop.hdfs.server.namenode.BlockManager.<init>(BlockManager.java:139) at org.apache.hadoop.hdfs.server.namenode.BlockManager.<init>(BlockManager.java:130) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:390) at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:1240) at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1348) at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1368) Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Level at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) ... 15 more |
|
返回顶楼 | |
发表时间:2011-03-11
iorofeng 写道 按照你的步骤走下来之后,在格式化namenode的时候出现下面的错误,求解答(我用的是Ubuntu10.4版本,hadoop0.21.0)
非常抱歉,我又试了下,还是没有出现如上问题,我用的是Ubuntu10.10,要不你也用10.10试试吧 |
|
返回顶楼 | |
发表时间:2011-03-28
执行bin/hadoop dfs -put urls urls这个的时候报错~Bad connection to FS. command aborted.
解决: System.err.println("Version Mismatch between client and server ... command aborted.");把你DataNode上的DFS数据全删了,再重新格式化NameNode。 |
|
返回顶楼 | |
发表时间:2011-11-17
我也是按照你的步骤一步一步做的,但是格式化namenode的时候报错 不知道是什么原因!!!!
[root@localhost hadoop]# hadoop namenode -format 11/11/13 10:41:14 INFO namenode.NameNode: SHUTDOWN_MSG: |
|
返回顶楼 | |
发表时间:2011-11-17
如果是单机,你自己写的java程序来解析文件肯定比hadoop要快得多
|
|
返回顶楼 | |
浏览 23699 次