在三台虚拟机上部署多节点Hadoop.docx

上传人:b****1 文档编号:10691102 上传时间:2023-05-27 格式:DOCX 页数:17 大小:21.84KB
下载 相关 举报
在三台虚拟机上部署多节点Hadoop.docx_第1页
第1页 / 共17页
在三台虚拟机上部署多节点Hadoop.docx_第2页
第2页 / 共17页
在三台虚拟机上部署多节点Hadoop.docx_第3页
第3页 / 共17页
在三台虚拟机上部署多节点Hadoop.docx_第4页
第4页 / 共17页
在三台虚拟机上部署多节点Hadoop.docx_第5页
第5页 / 共17页
在三台虚拟机上部署多节点Hadoop.docx_第6页
第6页 / 共17页
在三台虚拟机上部署多节点Hadoop.docx_第7页
第7页 / 共17页
在三台虚拟机上部署多节点Hadoop.docx_第8页
第8页 / 共17页
在三台虚拟机上部署多节点Hadoop.docx_第9页
第9页 / 共17页
在三台虚拟机上部署多节点Hadoop.docx_第10页
第10页 / 共17页
在三台虚拟机上部署多节点Hadoop.docx_第11页
第11页 / 共17页
在三台虚拟机上部署多节点Hadoop.docx_第12页
第12页 / 共17页
在三台虚拟机上部署多节点Hadoop.docx_第13页
第13页 / 共17页
在三台虚拟机上部署多节点Hadoop.docx_第14页
第14页 / 共17页
在三台虚拟机上部署多节点Hadoop.docx_第15页
第15页 / 共17页
在三台虚拟机上部署多节点Hadoop.docx_第16页
第16页 / 共17页
在三台虚拟机上部署多节点Hadoop.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

在三台虚拟机上部署多节点Hadoop.docx

《在三台虚拟机上部署多节点Hadoop.docx》由会员分享,可在线阅读,更多相关《在三台虚拟机上部署多节点Hadoop.docx(17页珍藏版)》请在冰点文库上搜索。

在三台虚拟机上部署多节点Hadoop.docx

在三台虚拟机上部署多节点Hadoop

cd/etc/network

viinterfaces

进入vi后,编辑

autoeth0

ifaceeth0inetstatic

addressIP地址

netmask掩码

gateway网关

重启SSH:

serivcesshrestart

重启网卡:

/etc/init.d/networkingrestart

取得root权限:

sudopasswd

su

1.硬件环境

共有3台机器,均使用的linux系统,Java使用的是openjdk-6-jdk

sudoapt-getupdate

sudoapt-getinstallopenjdk-6-jdk

修改主机名:

su

vi/etc/hostname

IP配置如下:

hadoop1:

192.168.75.132(NameNode)

hadoop2:

192.168.75.131(DataNode)

hadoop3:

192.168.75.133(DataNode)

这里有一点需要强调的就是,务必要确保每台机器的主机名和IP地址之间能正确解析。

一个很简单的测试办法就是ping一下主机名,比如在hadoop1上pinghadoop2,如果能ping通就OK!

若不能正确解析,可以修改/etc/hosts文件,如果该台机器作Namenode用,则需要在hosts文件中加上集群中所有机器的IP地址及其对应的主机名;如果该台机器作Datanode用,则只需要在hosts文件中加上本机IP地址和Namenode机器的IP地址。

以本文为例,hadoop1(NameNode)中的/etc/hosts文件看起来应该是这样的:

vi/etc/hosts

127.0.0.1         hadoop1        localhost

192.168.75.132      hadoop1        hadoop1

192.168.75.131     hadoop2        hadoop2

192.168.75.133     hadoop3        hadoop3

hadoop2(DataNode)中的/etc/hosts文件看起来就应该是这样的:

127.0.0.1         hadoop2        localhost

192.168.75.132      hadoop1        hadoop1

192.168.75.131     hadoop2        hadoop2

hadoop3(DataNode)中的/etc/hosts文件看起来就应该是这样的:

127.0.0.1         hadoop3        localhost

192.168.75.132      hadoop1        hadoop1

192.168.75.133     hadoop3        hadoop3

对于Hadoop来说,在HDFS看来,节点分为Namenode和Datanode,其中Namenode只有一个,Datanode可以是很多;在MapReduce看来,节点又分为Jobtracker和Tasktracker,其中Jobtracker只有一个,Tasktracker可以是很多。

我是将namenode和jobtracker部署在hadoop1上,hadoop2,hadoop3作为datanode和tasktracker。

当然你也可以将namenode,datanode,jobtracker,tasktracker全部部署在一台机器上。

2.目录结构

由于Hadoop要求所有机器上hadoop的部署目录结构要相同,并且都有一个相同的用户名的帐户。

addgrouphadoop

adduser--ingrouphadoophadoop

三台机器上是这样的:

都有一个hadoop的帐户,主目录是/home/hadoop。

下载hadoop:

wget

解压:

[hadoop@hadoop1:

~]$tar-zxvfhadoop-0.21.0.tar.gz

Hadoop部署目录结构如下:

/home/hadoop/hadoop0.21.0,所有的hadoop版本放在这个目录中。

将hadoop0.21.0压缩包解压至hadoop0.21.0中,为了方便以后升级,建议建立一个链接指向要使用的hadoop版本,不妨设为hadoop,

[hadoop@hadoop1:

~]$ln-shadoop-0.21.0hadoop

这样一来,所有的配置文件都在/home/hadoop/hadoop/conf/目录中,所有执行程序都在/home/hadoop/hadoop/bin目录中。

但是由于上述目录中hadoop的配置文件和hadoop的安装目录是放在一起的,这样一旦日后升级hadoop版本的时候所有的配置文件都会被覆盖,因此建议将配置文件与安装目录分离,一种比较好的方法就是建立一个存放配置文件的目录,/home/hadoop/hadoop/hadoop-config,然后将/home/hadoop/hadoop/conf/目录中的masters,slaves,hadoop-env.sh三个文件拷贝到hadoop-config目录中,并指定环境变量$HADOOP_CONF_DIR指向该目录。

环境变量在/home/hadoop/.bashrc和/etc/profile中设定。

如:

HADOOP_CONF_DIR=/home/hadoop/hadoop/hadoop-config

exportHADOOP_CONF_DIR

即:

cd/home/hadoop/hadoop

mkdirhadoop-config

cpconf/mastershadoop-config/

cpconf/slaveshadoop-config/

cpconf/hadoop-env.shhadoop-config/

sudovi/etc/profile

HADOOP_CONF_DIR=/home/hadoop/hadoop/hadoop-config

exportHADOOP_CONF_DIR

vi/home/hadoop/.bashrc

HADOOP_CONF_DIR=/home/hadoop/hadoop/hadoop-config

exportHADOOP_CONF_DIR

综上所述,为了方便以后升级版本,我们需要做到配置文件与安装目录分离,并通过设定一个指向我们要使用的版本的hadoop的链接,这样可以减少我们对配置文件的维护。

3.SSH设置

在Hadoop启动以后,Namenode是通过SSH(SecureShell)来启动和停止各个节点上的各种守护进程的,这就需要在节点之间执行指令的时候是不需要输入密码的方式,故我们需要配置SSH使用无密码公钥认证的方式。

首先要保证每台机器上都装了SSH服务器,且都正常启动。

实际中我们用的都是OpenSSH,这是SSH协议的一个免费开源实现。

apt-getinstallssh

以本文中的3台机器为例,现在hadoop1是主节点,它需要主动发起SSH连接到hadoop2,对于SSH服务来说,hadoop1就是SSH客户端,而hadoop2,hadoop3则是SSH服务端,因此在hadoop2,hadoop3上需要确定sshd服务已经启动。

简单的说,在hadoop1上需要生成一个密钥对,即一个私钥,一个公钥。

将公钥拷贝到hadoop2上,这样,比如当hadoop1向hadoop2发起ssh连接的时候,hadoop2上就会生成一个随机数并用hadoop1的公钥对这个随机数进行加密,并发送给hadoop1,hadoop1收到这个加密的数以后用私钥进行解密,并将解密后的数发送回hadoop2,hadoop2确认解密的数无误后就允许hadoop1进行连接了。

这就完成了一次公钥认证过程。

对于本文中的3台机器,首先在hadoop1上生成密钥对:

[hapoop@hadoop1:

~]$ssh-keygen-tdsa–P‘’–f~/.ssh/id_dsa

这个命令将为hadoop1上的用户hadoop生成其密钥对。

生成的密钥对id_rsa,id_rsa.pub,在/home/hadoop/.ssh目录下。

[hapoop@hadoop1:

.ssh]$cat~/.ssh/id_dsa.pub>>~/.ssh/authorized_keys

然后将id_rsa.pub的内容复制/home/hadoop/.ssh/authorized_keys文件中。

对于hadoop2:

[hapoop@hadoop2:

~]$mkdir.ssh

对于hadoop3:

[hapoop@hadoop3:

~]$mkdir.ssh

[hapoop@hapoop1:

.ssh]$scpauthorized_keyshapoop2:

/home/hapoop/.ssh/

[hapoop@hapoop1:

.ssh]$scpauthorized_keyshapoop3:

/home/hapoop/.ssh/

此处的scp就是通过ssh进行远程copy,此处需要输入远程主机的密码,即hadoop2,hadoop3机器上hadoop帐户的密码,当然,你也可以用其他方法将authorized_keys文件拷贝到其他机器上。

[hadoop@hadoop2:

.ssh]$chmod640authorized_keys

[hadoop@hadoop3:

.ssh]$chmod640authorized_keys

这一步非常关键,必须保证authorized_keys只对其所有者有读写权限,其他人不允许有写的权限,否则SSH是不会工作的。

[hadoop@hadoop2:

.ssh]$ls-la

drwx------2hadoophadoop.

drwx------3hadoophadoop..

-rw-r--r--1hadoophadoopauthorized_keys

注意每个机器上的.ssh目录的ls-la都应该和上面是一样的

接着,在3台机器上都需要对sshd服务进行配置,修改文件/etc/ssh/sshd_config。

vi/etc/ssh/sshd_config

#去除密码认证

PasswordAuthenticationno(?

如果这样,putty就不能登陆Linux了,去掉)

AuthorizedKeysFile.ssh/authorized_keys

至此各个机器上的SSH配置已经完成,可以测试一下了,比如hadoop1向hadoop2发起ssh连接。

[hadoop@hadoop1:

~]$sshhadoop2

如果ssh配置好了,就会出现以下提示信息

Theauthenticityofhost[hadoop2]can'tbeestablished.

Keyfingerprintis10245f:

a0:

0b:

65:

d3:

82:

df:

ab:

44:

62:

6d:

98:

9c:

fe:

e9:

52.

Areyousureyouwanttocontinueconnecting(yes/no)?

OpenSSH告诉你它不知道这台主机,但是你不用担心这个问题,因为你是第一次登录这台主机。

键入“yes”。

这将把这台主机的“识别标记”加到“~/.ssh/know_hosts”文件中。

第二次访问这台主机的时候就不会再显示这条提示信息了。

然后你会发现不需要输入密码就可以建立ssh连接了,恭喜你,配置成功了,不过,别忘了测试本机sshhadoop1。

(应该是只设置hadoop1对hadoop2发送ssh连接和hadoop1对hadoop3发送ssh连接,下面的需要配置吗?

同样,hadoop1对hadoop3发起ssh连接,再在hadoop3发起对hadoop1的连接。

这里不在赘述。

4.Hadoop环境变量

在/home/hadoop/hadoop/hadoop-config目录下的hadoop-env.sh中设置Hadoop需要的环境变量,其中JAVA_HOME是必须设定的变量。

HADOOP_HOME变量可以设定也可以不设定,如果不设定,HADOOP_HOME默认的是bin目录的父目录,即本文中的/home/hadoop/hadoop。

我的是这样设置的:

exportHADOOP_HOME=/home/hadoop/hadoop

这一句话exportJAVA_HOME=/usr/java/jdk1.6.0_20改成:

exportJAVA_HOME=/usr/lib/jvm/java-6-openjdk

5.Hadoop配置文件

修改slaves文件

如前所述,在hadoop1(NameNode)的hadoop-config/目录下,打开slaves文件,该文件用来指定所有的DataNode,一行指定一个主机名。

即本文中的hadoop2、hadoop3,因此slaves文件看起来应该是这样的:

括号?

即hadoop2和192.168.75.131二者写一个就行

hadoop2(192.168.75.131)

hadoop3(192.168.75.133)

修改masters文件

打开masters文件,该文件用来指定NameNode,内容如下:

hadoop1(192.168.75.132)

在hadoop的安装目录分别找到core-default.xml,hdfs-default.xml,mapred-default.xml三个文件,然后copy到hadoop-config/目录下,这三个文件包含Hadoop的所有配置项,然后把这个分别改名为core-site.xml,hdfs-site.xml,mapred-site.xml,我们根据需要修改如下:

(注意:

下面的配置文件中不要有中文或中文的符号,否则报错)

修改core-site.xml

core-site.xml的修改项如下:

hadoop.tmp.dir

/home/hadoop/hadoop/tmp

fs.defaultFS

hdfs:

//(masterIP):

9000

修改hdfs-site.xml

这里不需要修改此文件。

修改mapred-site.xml

mapreduce.jobtracker.address

(masterIP):

9001

NameNode

注意:

不同版本的变量名是不一样的啊~~~~~~~~~~~~

6.部署Hadoop

前面讲的这么多Hadoop的环境变量和配置文件都是在hadoop1这台机器上的,现在需要将hadoop部署到其他的机器上,保证目录结构一致。

[hadoop@hadoop1:

~]$scp-r/home/hadoop/hadoophadoop2:

/home/hadoop/

[hadoop@hadoop1:

~]$scp-r/home/hadoop/hadoophadoop3:

/home/hadoop/

至此,可以说,Hadoop已经在各个机器上部署完毕了,下面就让我们开始启动Hadoop吧。

7.启动Hadoop

启动之前,我们先要格式化namenode,先进入~/hadoop/目录,执行下面的命令:

[hadoop@hadoop1hadoop]$bin/hadoopnamenode–format

不出意外,应该会提示格式化成功。

如果不成功,就去hadoop/logs/目录下去查看日志文件。

下面就该正式启动hadoop啦,在bin/下面有很多启动脚本,可以根据自己的需要来启动。

*start-all.sh启动所有的Hadoop守护。

包括namenode,datanode,jobtracker,tasktrack

*stop-all.sh停止所有的Hadoop

*start-mapred.sh启动Map/Reduce守护。

包括Jobtracker和Tasktrack

*stop-mapred.sh停止Map/Reduce守护

*start-dfs.sh启动HadoopDFS守护.Namenode和Datanode

*stop-dfs.sh停止DFS守护

在这里,简单启动所有守护:

[hadoop@hadoop1:

hadoop]$bin/start-all.sh

同样,如果要停止hadoop,则

[hadoop@hadoop1:

hadoop]$bin/stop-all.sh

8.HDFS操作

运行bin/目录的hadoop命令,可以查看Haoop所有支持的操作及其用法,这里以几个简单的操作为例。

建立目录:

[hadoop@hadoop1hadoop]$bin/hadoopdfs-mkdirtestdir

在HDFS中建立一个名为testdir的目录,复制文件:

[hadoop@hadoop1hadoop]$bin/hadoopdfs-put/home/large.ziptestfile.zip

把本地文件large.zip拷贝到HDFS的根目录/user/hadoop/下,文件名为testfile.zip,查看现有文件:

[hadoop@hadoop1hadoop]$bin/hadoopdfs-ls

1多机模式部署

一、Jdk安装

命令:

sudoapt-getupdate

sudoapt-getinstallopenjdk-6-jdk

目录:

/usr/lib/jvm/java-6-openjdk

配置环境变量:

sudogedit/etc/environment

在其中添加如下两行:

CLASSPATH=./:

/usr/lib/jvm/java-6-openjdk/lib

JAVA_HOME=/usr/lib/jvm/java-6-openjdk

PATH添加:

:

/usr/lib/jvm/java-6-openjdk

二、新增hadoop用户

命令:

sudoaddgrouphadoop

sudoadduser--ingrouphadoophadoop

sudogeditetc/sudoers

添加配置:

在rootALL=(ALL)ALL后hadoopALL=(ALL)ALL使hadoop用户具有root权限

(id:

查看用户)

三、ssh配置

用hadoop账户进行登录。

安装openssh-server:

sudoapt-getinstallopenssh-server

建立SSHKEY:

ssh-keygen-trsa-P""

启用SSHKEY:

cat$HOME/.ssh/id_rsa.pub>>$HOME/.ssh/authorized_keys

sudo/etc/init.d/sshreload

验证SSH的配置:

sshlocalhost

4、安装hadoop并更改用户所有权

wget

我们采用的Hadoop版本是最新的Hadoop-0.20.2,可到Apache基金会官方主页下载http:

//www.apache.org/dyn/closer.cgi/hadoop/core,然后使用tar或直接解压到/home/hadoop下,解压后得到一个hadoop-0.20.2的一个文件夹。

安装目录:

/usr/local/hadoop

更改所有权:

chown-Rhadoop:

hadoophadoop

五、配置hadoop

(1)配置$HADOOP_HOME/conf/hadoop-env.sh

切换到Hadoop的安装路径找到hadoop-0.20.2下的conf/hadoop-env.sh文件

将:

#exportJAVA_HOME=/usr/lib/j2sdk1.5-sun

改为:

exportJAVA_HOME=/usr/lib/jvm/java-6-openjdk

(2)配置$HADOOP_HOME/conf/core-site.xml

切换到Hadoop的安装路径找到hadoop-0.20.2下的conf/core-site.xml文件

fs.default.name

hdfs:

//localhost:

9000

hadoop.tmp.dir

/home/hadoop/tmp

--配置第二名称节点

fs.checkpoint.dir

{}/home/hadoop/secondname

--设置回收站保留时间

fs.trash.interval

10080

Numberofminutesbetweentrashcheckpoints.Ifzero,thetrashfeatureisdisabled

(3)配置$HADOOP_HOME/conf/hdfs-site.xml

切换到Hadoop的安装路径找到hadoop-0.20.2下的conf/hdfs-site.xml文件内容如下:

dfs.name.dir

/home/hadoop/name

dfs.data.dir

/home/hadoop/data

dfs.replication

2

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2