设为首页 收藏本站
查看: 804|回复: 0

[经验分享] Hadoop 0.20.2 集群配置

[复制链接]

尚未签到

发表于 2016-12-7 07:31:33 | 显示全部楼层 |阅读模式
  <!--  [if gte mso 9]><xml><w:WordDocument><w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel><w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery><w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery><w:DocumentKind>DocumentNotSpecified</w:DocumentKind><w:DrawingGridVerticalSpacing>7.8</w:DrawingGridVerticalSpacing><w:View>Normal</w:View><w:Compatibility></w:Compatibility><w:Zoom>0</w:Zoom></w:WordDocument></xml><![endif]-->
Hadoop0.20.2集群配置
说明:本文档是个人研究配置hadoop集群过程后产生的,参考了别人的配置文档,同时结合自己实际的情况,解决遇到的问题后最终配置成功。2010-11-25

1准备机器:没有多余机器,安装了vmware7.0后模拟的2台系统,操作系统是ubuntu10.10


所有的系统必须有相同的用户和密码,这里两个系统都是用hadoop:hadoop作用户名和密码
以下操作均是以hadoop身份进行的。

2根据机器IP地址更改hosts文件
说明:master代表第一台机器,主节点(IP:202.112.1.50),slave代表第二台机器,数据节点(IP:202.112.1.49),以下可能直接使用此名称。

Master上的hosts文件
127.0.0.1hadoop1localhost
202.112.1.50hadoop1hadoop1
202.112.1.49hadoop2hadoop2
Slave上的hosts文件
127.0.0.1hadoop2localhost
202.112.1.50hadoop1hadoop1
202.112.1.49hadoop2hadoop2

另外:需要将/etc/hostname文件内容更改为hadoop1或者hadoop2(不知道是否是必须,我这个该了的,OK)

(引用别人的:对于hadoop来说,从hdfs来看,节点分为namenodedatanode,其中namenode只有一个,datanode有多个;从mapreduce来看,节点分为jobtrackertasktracker,其中jobtracker只有一个,tasktracker有多个;)

3安装ssh(为什么要安装这个东西,我不知道,或者说可以去百度一下看看别人怎么说的,他们好像说集群中通信用ssh,谁在乎呢,安装吧)
Master和Slave机器上都要ssh
命令:apt-getinstallssh(没有多余配置了,哦,有一个需要输入Y表示同意安装:::)

master机器上做以下操作
安装成功后执行以下命令:
[hadoop@hadoop1:~]$ssh-keygen-tdsa-P''-f~/.ssh/id_dsa
然后是
[hadoop@hadoop1:~]$cat~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys

slave机器上建立.ssh文件夹,master上通过以上命令自己创建了一个,slave就要自己动手了,毕竟是slave嘛。
[hadoop@hadoop2:~]$mkdir.ssh

然后将master上的authorized_keys拷贝到slave.ssh文件夹下,可以通过以下命令:
[hadoop@hadoop1:~]$scp~/.ssh/authorized_keyshadoop2:/home/hadoop/.ssh/

测试一下:[hadoop@hadoop1:~]sshhadoop2
提示是否连接,输入yes,连接成功。以后就不需要输入yes了。只需要从masterslave的无密码连接,而不需要测试从slavemaster的无密码连接;在masterslave机器上.ssh文件夹下的内容也是不完全一样的。

4安装jdk
Ubuntu下执行[hadoop@hadoop1:~]sudoapt-getinstalsun-java6-jdk
Master和Slave机器都需要jdk环境。在ubuntu10.10下是不需要再去设置java_home等环境变量的,安装完后直接输入java-versionjavac-version测试一下,OK
至于其他Linux环境,需要安装jdk和配置jdk环境变量的,请百度/Google吧,直到java-version返回正确结果为止。

5下载hadoop0.20.2
http://mirror.bjtu.edu.cn/apache/hadoop/core/hadoop-0.20.2/
6部署hadoop
master机器上更改配置,然后再拷贝到slave机器上,这样所有机器上的hadoop就能保证一模一样了。
假定放到hadoop用户根目录下:
首先解压hadoop-0.20.2.tar.gz
[hadoop@hadoop1:~]$tar-zxvfhadoop-0.20.2.tar.gz
Ok,更改配置开始了,包括hadoop-env.shmastersslavescore-site.xml,hdfs-site.xml,mapred-site.xml一共6个文件。
hadoop-env.sh
添加以下两行(根据实际路径可能有变化哦):
exportJAVA_HOME=/usr/lib/jvm/java-6-sun
exportHADOOP_HOME=/home/hadoop/hadoop-0.20.2
masters:
hadoop1
slaves:
hadoop2
core-site.xml:
<?xmlversion="1.0"?>
<?xml-stylesheettype="text/xsl"href="configuration.xsl"?>
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://202.112.1.50:9000</value>
<description>这里202.112.1.50这个是指master机器IP地址,当然可以使用hadoop1主机名,条件是DNS能够解析,否则会有问题,datanode连接namenode时会报连接不上的错误。所以实际应用中根据master机器的IP来更改吧,最好使用IP这样就不存在问题了。Thenameofthedefaultfilesystem.AURIwhoseschemeandauthoritydeterminetheFileSystemimplementation.Theuri'sschemedeterminestheconfigproperty(fs.SCHEME.impl)namingtheFileSystemimplementationclass.Theuri'sauthorityisusedtodeterminethehost,port,etc.forafilesystem.</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/HadoopTemp</value>
<description>这里这个HadoopTemp目录需要自己手动建立,在masterslave机器上都需要手动创建</description>
</property>
</configuration>

hdfs-site.xml

<?xmlversion="1.0"?>
<?xml-stylesheettype="text/xsl"href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>这里指定数据文件默认保留几份备份,默认的是3,自己可以指定,测试时可以指定1减少空间需求。Defaultblockreplication.Theactualnumberofreplicationscanbespecifiedwhenthefileiscreated.Thedefaultisusedifreplicationisnotspecifiedincreatetime.
</description>
</property>
</configuration>

mapred-site.xml

<?xmlversion="1.0"?>
<?xml-stylesheettype="text/xsl"href="configuration.xsl"?>
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>202.112.1.50:9001</value>
<description>同意这里指定MasterIP或者host,最好指定IPThehostandportthattheMapReducejobtrackerrunsat.If"local",thenjobsarerunin-processasasinglemapandreducetask.
</description>
</property>
</configuration>

至此,所有配置已经完成,hadoop的配置文件只需要更改自己需要更改的,以上就仅仅更改了很少属性,而其自身有相当多的属性,hadoop在工作时如果用户更改了,则使用更改后的属性值,如果没有在*-site.xml文档里出现,则hadoop使用默认的属性,默认属性值*-default.xml文档里(默认文档中/hadoop-0.20.2/src/目录下);当然也可以将整个-default.xml文档内容拷贝过来,修改需要更改的属性。
以上配置是在master上进行的,现在将整个hadoop-0.20.2文件夹拷贝到slave机器上,使用命令:
[hadoop@hadoop1:~]$scp-r~/hadoop-0.20.2hadoop2:/home/hadoop/

7启动hadoop
Hadoop的命令在/hadoop-0.20.2/bin/目录下,启动过程在master机器上进行。
启动之前需要进行格式化,类似于Windows文件系统格式化,hadoop的文件系统也需要格式化后才能被hadoop使用。
[hadoop@hadoop1:hadoop-0.20.2]$bin/hadoopnamenode-format
此时配置文件里设置的HadoopTemp目录会发生变化,check一下了。如果此命令出错,请百度/Google了。
启动:
[hadoop@hadoop1:hadoop-0.20.2]$bin/start-all.sh
如果有错误,请查看log文件
测试:
[hadoop@hadoop1:hadoop-0.20.2]$bin/hadoopdfs-mkdirtestdir#创建一个文件夹
[hadoop@hadoop1:hadoop-0.20.2]$bin/hadoopdfs-put/home/hadoop/test.txt/testdir/test.txt
#上传一个文件
[hadoop@hadoop1:hadoop-0.20.2]$bin/hadoopdfs-ls#列出文件目录
当然也可以访问:http://202.112.1.50:50070
http://202.112.1.50:50030




8问题及解决
1安装jdk时找不到jdk
我在终端输入:sudoapt-getinstallsun_java6_jdk
出现了问题:packagesun_java6_jdk不能被找到
apt-get提示了以下信息:
Packagesun-java6-jdkisnotavailable,butisreferredtobyanotherpackage.
Thismaymeanthatthepackageismissing,hasbeenobsoleted,or
isonlyavailablefromanothersource
E:Packagesun-java6-jdkhasnoinstallationcandidate

解决办法如下:
1.在终端输入:sudoadd-apt-repository"debhttp://archive.canonical.com/lucidpartner"回车
2.在终端输入:sudoapt-getupdate,回车
3.在终端输入:sudoapt-getinstallsun_java6_jdk
OK
问题解决了
2虚拟机上不能联网问题,即不能自动获得IP
解决办法:设置固定IP
更改/etc/network/interfaces文件内容如下:
#Thisfiledescribesthenetworkinterfacesavailableonyoursystem
#andhowtoactivatethem.Formoreinformation,seeinterfaces(5).
autolo
ifaceloinetloopback
autoeth0
ifaceeth0inetstatic
address9.186.54.50
netmask255.255.255.0
gateway9.186.54.1
然后重新启用新IPsudo/etc/init.d/networkingrestart
3最严重的问题是启动hadoop后一切都表现正常,然而执行bin/hadoopdfs-put/home/hadoop/test.txt/testdir/test.txt命令时出错:
10/01/0719:50:23INFOhdfs.DFSClient:org.apache.hadoop.ipc.RemoteException:java.io.IOException:File/user/administrator/chen3/NOTICE.txtcouldonlybereplicatedto0nodes,insteadof1
atorg.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1270)
atorg.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:351)
atsun.reflect.GeneratedMethodAccessor3.invoke(UnknownSource)
atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
atjava.lang.reflect.Method.invoke(Method.java:597)
atorg.apache.hadoop.ipc.RPC$Server.call(RPC.java:452)
atorg.apache.hadoop.ipc.Server$Handler.run(Server.java:892)
百度一下有很多相关的解决办法,当然这些办法都没有解决我的错误,也就是说有其它原因引起了该错误,最后查得该错误就是配置文件里使用了hostname而不是IP地址,因为没有DNS服务器来解析,所以...

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-310622-1-1.html 上篇帖子: Hadoop学习七:Hadoop-Hdfs源码 conf包 下篇帖子: hadoop小文件操作之SequenceFile
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表