Hadoop 0.20.2 集群配置

本文档详细记录了Hadoop0.20.2集群的配置过程,包括虚拟机环境搭建、SSH安装配置、JDK安装、Hadoop下载与部署等步骤,并针对配置过程中遇到的问题提供了解决方案。

<!-- [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.1 hadoop1 localhost

202.112.1.50 hadoop1 hadoop1

202.112.1.49 hadoop2 hadoop2

Slave上的 hosts 文件

127.0.0.1 hadoop2 localhost

202.112.1.50 hadoop1 hadoop1

202.112.1.49 hadoop2 hadoop2

另外:需要将/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

然后重新启用新IP sudo/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.txt couldonlybereplicatedto0nodes,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 服务器来解析,所以 ...

【复现】并_离网风光互补制氢合成氨系统容量-调度优化分析(Python代码实现)内容概要:本文围绕“并_离网风光互补制氢合成氨系统容量-调度优化分析”的主题,提供了基于Python代码实现的技术研究与复现方法。通过构建风能、太阳能互补的可再生能源系统模型,结合电解水制氢与合成氨工艺流程,对系统的容量配置与运行调度进行联合优化分析。利用优化算法求解系统在不同运行模式下的最优容量配比和调度策略,兼顾经济性、能效性和稳定性,适用于并网与离网两种场景。文中强调通过代码实践完成系统建模、约束设定、目标函数设计及求解过程,帮助读者掌握综合能源系统优化的核心方法。; 适合人群:具备一定Python编程基础和能源系统背景的研究生、科研人员及工程技术人员,尤其适合从事可再生能源、氢能、综合能源系统优化等相关领域的从业者;; 使用场景及目标:①用于教学与科研中对风光制氢合成氨系统的建模与优化训练;②支撑实际项目中对多能互补系统容量规划与调度策略的设计与验证;③帮助理解优化算法在能源系统中的应用逻辑与实现路径;; 阅读建议:建议读者结合文中提供的Python代码进行逐模块调试与运行,配合文档说明深入理解模型构建细节,重点关注目标函数设计、约束条件设置及求解器调用方式,同时可对比Matlab版本实现以拓宽工具应用视野。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值