互联网服务商业智能

Hadoop开发日志

本文件由:思数云计算和大数据处理技术服务中心


详细登陆:http://hadoop.bihuman.com/  


更多知识技巧等你学




Hadoop开发日志

一、开发环境配置

1、系统环境

(1)硬件平台


处理器:Pentium(R) Dual-Core CPU E5500 @ 2.80GHz × 2 ,内存:2GB

(2)软件平台

   Ubuntu11.10

2、环境

二、ssh,jdk7,jre7,tomcat7,netbeans7配置完成!2011.11.19 20:20

防火墙 启动 sudo ufw enable/disable

单节点 测试成功! 2011.11.21



Hadoop环境搭建——单节点篇


自漫聊1.0发布以来,研究Hadoop也有一段时间了,目前环境已基本搭建好,规模为15台的小型集群,昨晚测试时是用wordcount统计一个1.2G的log文件,总耗时2分16秒,虽然测试文件不大,但其性能的优越性已经体现出来了。



闲话不多说了,进正题。


注:本文的环境搭建是针对双系统和linux系统的,而非win下的虚拟机!



流程:

装机阶段: 安装ubuntu,jdk和hadoop


创建一个名为hadoop的用户和用户组


配置阶段: 配置环境变量


创建ssh key


配置hadoop


运行测试阶段: 格式化namenode


启动hadoop


跑wordcount


准备:

ubuntu10.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 -xzfhadoop0.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 hadoophadoop

(注1:前一个hadoop为用户组名,后面的是用户名,之所以名字一样是为了方便统一管理


注2:执行后会有一些信息需要填写,可以不填,都敲回车,用系统默认的即可,大概5个吧)


3、用gedit打开etc下的sudoers文件

sudo gedit /etc/sudoers


4、在 rootALL=(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

exportPATH=.:/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 installopenssh-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路径,完全按此文档来的话应改为 "exportJAVA_HOME=/usr/Java/jdk1.6.0_23" )


2、配置conf目录下的core-site.xml

sudo gedit conf/core-site.xml


(打开后标签中是空的,所以在空的地方加入如下配置)

Xml代码

1.

2.
fs.default.name

3.
hdfs://localhost:9000

4.

5.

6.

7.
dfs.replication

8.
1

9.

10.

11.

12.
hadoop.tmp.dir

13.
/home/hadoop/tmp

14.



3、配置conf目录下的mapred-site.xml

sudo gedit conf/mapred-site.xml

(打开后标签 中也是空的,添加如下配置)


Xml代码

1.

2.
mapred.job.tracker

3.
localhost:9001

4.


运行测试阶段:

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.jarwordcount firstTest result

(注:此语句意为“对firstTest下的所有文件执行wordcount,将统计结果输出到result文件夹中”,若result文件夹不存在则会自动创建一个)


4、查看结果

hadoop dfs -cat result/part-r-00000

(注:结果文件默认是输出到一个名为“part-r-*****”的文件中的,可用指令“hadoop dfs -lsresult”查看result目录下包含哪些文件)



Hadoop环境搭建——集群篇




流程:


配置阶段:


配置一系列文件


在所有slave节点上拷贝master和JobTracker的公钥


在JobTracker节点上拷贝master的公钥


运行阶段:


启动hadoop


跑wordcount



集群搭建准备:


至少两台已完成单节点搭建的机器

(此例为两台,IP分别是192.168.1.10与192.168.1.11,其中10为master




配置阶段:

1、配置一系列文件(所有节点上)

1、配置etc下的hosts文件


sudo
gedit
/etc/hosts

(注:打开后将里面的内容全部删除,不删除的话启动时会出现所有slave启动正常,但是master上的DataNode为0,导致系统不能正常运转的情况,全部删除以后添加所有节点的IP和标识符,格式如下


192.168.1.10
master


192.168.1.11
slave


标识符可以随便写,主要是起到一个映射作用)


2、进入hadoop目录下,配置conf下的masters文件


cd
/usr/local/hadoop


sudo
gedit
conf/masters

(打开后将里面内容清空,然后添加“master”或者master的IP“192.168.1.10”,此处即是hosts中配置的映射,填master或者直接填IP都是一样的)



3、配置conf下的slaves文件


sudo
gedit
conf/slaves


(打开后将里面内容清空,然后添加“slave”或者slave的IP“192.168.1.11”,原因同上)


4、配置conf下的core-site.xml文件


sudo
gedit
conf/core-site.xml


(因为已完成单节点配置,因此只需要修改就行了。打开后将第一个标签中的localhost改为“master”或者master的IP,如下

Xml代码

  

1.

2.
fs.default.name

3.
hdfs://master:9000

4.

第二个
标签,即包含dfs.replication一行的那个,其中的“”表示
文件上传到dfs上时的备份个数,此数值不能大于slave即datanode的个数)



5、配置conf下的hdfs-site.xml文件(此配置在slave节点上可有可无)


sudo
gedit
conf/hdfs-site.xml


(打开后在空的
中添加如下配置

Xml代码

  

1.

2.
dfs.replication

3.
1

4.

5.

6.

7.
dfs.name.dir

8.
/home/hadoop/hdfs/name

9.

10.

11.

12.
dfs.data.dir

13.
/home/hadoop/hdfs/data

14.



6、配置conf下的mapred-site.xml文件


sudo
gedit
conf/mapred-site.xml

(打开后将标签里的localhost改为JobTracker的IP,因为本例中JobTracker也是master本身,所以将localhost改为“master”或master的IP)



2、在所有slave节点上拷贝master和JobTracker的公钥


1、拷贝公钥


scp
hadoop@master:/home/hadoop/.ssh/id_rsa.pub
/home/hadoop/.ssh/master_rsa.pub


scp
hadoop@master:/home/hadoop/.ssh/id_rsa.pub
/home/haddop/.ssh/jobtracker_rsa.pub


(注:因为本例中master和JobTracker是同一台机器,所以相当于在master上拷了两次公钥)



2、将拷贝的公钥添加到信任列表


cat
/home/hadoop/.ssh/master_rsa.pub
>>
/home/hadoop/.ssh/authorized_keys


cat
/home/hadoop/.ssh/jobtracker_rsa.pub
>>
/home/hadoop/.ssh/authorized_keys



3、在JobTracker上拷贝master的公钥

1、拷贝公钥

scp
hadoop@master:/home/hadoop/.ssh/id_rsa.pub
/home/hadoop/.ssh/master_rsa.pub

(注:本例中master和JobTracker是同一台机器,所以相当于自己拷自己的公钥.....囧......)



2、添加到信任列表

cat
/home/hadoop/.ssh/master_rsa.pub
>>
/home/hadoop/.ssh/authorized_keys





运行阶段:


1
、启动hadoop


1、在所有节点上删除/home/hadoop/下的tmp文件夹(包括master节点)


sudo
rm
-r
/home/hadoop/tmp


(注:tmp文件夹内部存放有NameNode的ID信息,如果ID不一样的话是无法正常连接的,此处的删除操作是为了保证ID的一致性)



2、在master上格式化NameNode


hadoop
namenode
-format



3、启动hadoop


bin/start-all.sh



4、查看各节点是否正常启动


jps

(此语句执行后,slave节点中必须有DataNode,master节点中必须有NameNode,否则启动失败)



5、查看整个系统状态


hadoop
dfsadmin
-report


(此语句执行后能显示当前连接的slave数,即DataNode数)



2、跑wordcount


1、准备测试文件


sudo
echo
"mu
ha
ha
ni
da
ye
da
ye
da
da"
>
/tmp/test.txt



2、将测试文件上传到dfs文件系统


hadoop
dfs
-put
/tmp/test.txt
multiTest


(注:如multiTest目录不存在的话会自动创建)



3、执行wordcount


hadoop
jar
hadoop-mapred-examples0.21.0.jar
wordcout
multiTest
result

(注:如result目录不存在的话会自动创建)



4、查看结果


hadoop
dfs
-cat
result/part-r-00000




至此集群环境搭建完毕~

补充说明:


网上文档中说的关于关闭防火墙关闭安全模式,我们在实践中并未涉及到,如遇到连接不到datanode的问题,请检查您的hosts文件中是否最上面多出两行,如果是的话请删除,然后重新按照运行阶段的步骤来。





本文件由:思数云计算和大数据处理技术服务中心


详细登陆:http://hadoop.bihuman.com/  


更多知识技巧等你学


参与6

0同行回答

“答”则兼济天下,请您为题主分忧!
liuchunliuchun测试工程师浪潮
不觉明Li显示全部
不觉明Li收起
互联网服务 · 2014-01-24
浏览425
happyeverydayhappyeverydayIT顾问中国石化
亚历山大啊,看的这么迷糊显示全部
亚历山大啊,看的这么迷糊收起
IT咨询服务 · 2013-08-23
浏览447
lonelyleaflonelyleafit技术咨询顾问上海
广告?显示全部
广告?收起
零售/批发 · 2013-08-21
浏览480
VampireVampire软件开发工程师公司
进入到cognos了 ????显示全部
进入到cognos了 ????收起
IT咨询服务 · 2013-08-15
浏览444
cognos2010cognos2010系统分析师IBM
hadoop已经进入cognos区域了,极大的挑战显示全部
hadoop已经进入cognos区域了,极大的挑战收起
银行 · 2013-08-15
浏览457

提问者

sishu1
软件开发工程师新宇科技有限公司

相关问题

相关资料

问题状态

  • 发布时间:2013-08-15
  • 关注会员:1 人
  • 问题浏览:2568
  • 最近回答:2014-01-24
  • X社区推广