LinuxX64下Hadoop分布式配置和使用0319.docx

上传人:b****8 文档编号:10946076 上传时间:2023-02-23 格式:DOCX 页数:41 大小:1.19MB
下载 相关 举报
LinuxX64下Hadoop分布式配置和使用0319.docx_第1页
第1页 / 共41页
LinuxX64下Hadoop分布式配置和使用0319.docx_第2页
第2页 / 共41页
LinuxX64下Hadoop分布式配置和使用0319.docx_第3页
第3页 / 共41页
LinuxX64下Hadoop分布式配置和使用0319.docx_第4页
第4页 / 共41页
LinuxX64下Hadoop分布式配置和使用0319.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

LinuxX64下Hadoop分布式配置和使用0319.docx

《LinuxX64下Hadoop分布式配置和使用0319.docx》由会员分享,可在线阅读,更多相关《LinuxX64下Hadoop分布式配置和使用0319.docx(41页珍藏版)》请在冰豆网上搜索。

LinuxX64下Hadoop分布式配置和使用0319.docx

LinuxX64下Hadoop分布式配置和使用0319

Hadoop0.20.2在LinuxX64下的分布式配置和使用

2013年3月

郭运凯

目录

介绍2

1集群网络环境介绍及快速部署2

2SSH无密码验证配置6

2.1配置所有节点之间SSH无密码验证6

3JDK安装和Java环境变量配置10

3.1安装JDK1.610

3.2Java环境变量配置11

4Hadoop集群配置13

5Hadoop集群启动17

6Hadoop使用22

6.1客户机与HDFS进行交互22

6.1.1客户机配置22

6.1.2列出HDFS根目录/下的文件22

6.1.3HDFS用户管理23

6.1.5复制本地数据到HDFS中23

6.1.6数据副本说明23

6.1.7hadoop-site.xml参数说明24

6.1.8HDFS中的路径25

6.1.8Hadoop相关命令25

6.2客户机提交作业到集群25

6.2.1客户机配置25

6.2.2一个测试例子WordCount26

6.2.3编写Hadoop应用程序并在集群上运行29

6.2.4三种模式下编译运行Hadoop应用程序29

6.2.5提交多个作业到集群31

附录:

Hadoop安装常见错误31

介绍

这是利用Vmware9.0(VMware-workstation-full-9.0.0-812388,已下载(注册机))在一台服务器上搭建的分布式环境,操作系统CentOS6.3X64中配置Hadoop-0.20.2时的总结文档。

Hadoop配置建议所有配置文件中使用主机名进行配置,并且机器上应在防火墙中开启相应端口,并设置SSHD服务为开机启动,此外java环境变量可以在/etc/profile中配置。

1集群网络环境介绍及快速部署

集群包含五个节点:

1个namenode,4个datanode,节点之间局域网连接,可以相互ping通。

所有节点均是Centos6.364位系统,防火墙均禁用,sshd服务均开启并设置为开机启动。

a)首先在VMware中安装好一台Centos6.3,安装时创建hadoop用户。

假设虚拟机的名字为NameNode

b)关闭虚拟机,把NameNode文件夹,拷贝4份,并命名为DataNode1,..,DataNode4

c)用VMware打开每个DateNode,设置其虚拟机的名字

d)打开操作系统,当弹出对话框时,选择“Icopyit”

e)打开每个虚拟机,查看ip地址

ifconfig

按照以上各虚拟机结果,IP地址规划如下

10.88.106.187

namenode

10.88.106.188

datanode1

10.88.106.189

datanode2

10.88.106.190

datanode3

10.88.106.191

datanode4

192.168.1.114

namenode

192.168.1.115

datanode1

192.168.1.116

datanode2

192.168.1.117

datanode3

 

有时候,会使用VMware虚拟机的的克隆功能,快速的复制已安装好的系统。

可是克隆完之后,ifconfig会发现没有eth0网卡。

问题解决方法:

1、编辑/etc/udev/rules.d/70-persistent-net.rules文件

把NAME="eth0"的那行配置注释掉或者删掉,把NAME="eth1"的修改成NAME="eth0",修改后如下:

2、更改网卡配置文件,/etc/sysconfig/network-scripts/ifcfg-eth0

将HWADDR的值修改为/etc/udev/rules.d/70-persistent-net.rules文件中的新值,修改后如下:

3、修改/etc/sysconfig/network,更改主机名

4、重启系统,reboot,再次ifconfig查看网卡情况

5、同时需注意IP地址尽量设置成静态iP防止IP变动。

配置文件位于:

/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.0.3

NETMASK=255.255.255.0

GATEWAY=192.168.0.1

使IP地址生效:

/sbin/ifdowneth0

/sbin/ifupeth0

配置dns解析

echo"nameserver211.98.1.28">>/etc/resolv.conf

通知网关更新信息:

/etc/init.d/networkrestart

f)配置NameNode

第一步,检查机器名

#hostname

如发现不对,则修改,root用户登陆,修改命令如下

#vim/etc/sysconfig/network

NETWORKING=yes

HOSTNAME=NameNode

 

依次对每个节点进行处理,修改完之后,重启系统#reboot

g)修改/etc/hosts

root用户

vim/etc/sysconfig/network

(1)namenode节点上编辑/etc/hosts文件

将所有节点的名字和IP地址写入其中,写入如下内容,注意注释掉127.0.0.1行,保证内容如下:

10.88.106.187namenode

10.88.106.188datanode1

10.88.106.189datanode2

10.88.106.190datanode3

10.88.106.191datanode4

#127.0.0.1centos63localhost.localdomainlocalhost

(2)将Namenode上的/etc/hosts文件复制到所有数据节点上,操作步骤如下:

root用户登录namenode;

执行命令:

scp/etc/hostsroot@10.88.106.188:

/etc/hosts

scp/etc/hostsroot@10.88.106.189:

/etc/hosts

scp/etc/hostsroot@10.88.106.190:

/etc/hosts

scp/etc/hostsroot@10.88.106.191:

/etc/hosts

节点分别检查cat/etc/hosts

h)规划系统目录

完整路径

说明

/usr/local/hadoop

hadoop的主目录

/home/hadoop/tmp

临时目录

/home/hadoop/hdfs/name

namenode上存储hdfs名字空间元数据

/home/hadoop/hdfs/data

datanode上数据块的物理存储位置

/home/hadoop/mapred/local

tasktracker上执行mapreduce程序时的本地目录

/home/hadoop/mapred/system

这个是hdfs中的目录,存储执行mr程序时的共享文件

至于这里为什么在/usr/local下建立,解释如下

/usr文件系统

  /usr文件系统经常很大,因为所有程序安装在这里./usr里的所有文件一般来自Linuxdistribution;本地安装的程序和其他东西在/usr/local下.这样可能在升级新版系统或新distribution时无须重新安装全部程序.

/usr/local本地安装的软件和其他文件放在这里.

小贴士:

创建目录:

mkdir(makedirectories)

功能说明:

建立目录

语  法:

mkdir[-p][--help][--version][-m<目录属性>][目录名称]

补充说明:

mkdir可建立目录并同时设置目录的权限。

参  数:

-m<目录属性>或–mode<目录属性>建立目录时同时设置目录的权限。

-p或–parents若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录。

例:

mkdirtest

开始建立目录:

在NameNode下,root用户

[root@NameNode~]#mkdir-p/usr/local/hadoop/tmp

[root@NameNode~]#mkdir-p/home/hadoop/hdfs/name

[root@NameNode~]#mkdir-p/home/hadoop/hdfs/data

[root@NameNode~]#mkdir-p/home/hadoop/mapred/local

[root@NameNode~]#mkdir-p/home/hadoop/mapred/system

验证一下

可以直接进入tmp目录,不用先建立上级目录

修改目录/usr/local/hadoop的拥有者(因为该目录用于安装hadoop,用户对其必须有rwx权限。

chown-Rhadoop:

hadoop/usr/local/hadoop

修改前

修改后

创建完毕基础目录后,下一步就是设置SSH无密码验证,以方便hadoop对集群进行管理。

2SSH无密码验证配置

Hadoop需要使用SSH协议,namenode将使用SSH协议启动namenode和datanode进程,datanode向namenode传递心跳信息(三秒一次侦测节点是否活着)可能也是使用SSH协议,这是我认为的,还没有做深入了解,datanode之间可能也需要使用SSH协议。

假若是,则需要配置使得所有节点之间可以相互SSH无密码登陆验证。

2.1配置所有节点之间SSH无密码验证

(0)原理

节点A要实现无密码公钥认证连接到节点B上时,节点A是客户端,节点B是服务端,需要在客户端A上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到服务端B上。

当客户端A通过ssh连接服务端B时,服务端B就会生成一个随机数并用客户端A的公钥对随机数进行加密,并发送给客户端A。

客户端A收到加密数之后再用私钥进行解密,并将解密数回传给B,B确认解密数无误之后就允许A进行连接了。

这就是一个公钥认证过程,其间不需要用户手工输入密码。

重要过程是将客户端A公钥复制到B上。

因此如果要实现所有节点之间无密码公钥认证,则需要将所有节点的公钥都复制到所有节点上。

(1)所有机器上生成密码对

(a)所有节点用hadoop用户登陆,并执行以下命令,生成rsa密钥对:

ssh-keygen-trsa

这将在/home/hadoop/.ssh/目录下生成一个私钥id_rsa和一个公钥id_rsa.pub。

#suhadoop

ssh-keygen-trsa

Generatingpublic/privatersakeypair.

Enterfileinwhichtosavethekey(/home/hadoop/.ssh/id_rsa):

默认路径

Enterpassphrase(emptyfornopassphrase):

回车,空密码

Entersamepassphraseagain:

Youridentificationhasbeensavedin/home/hadoop/.ssh/id_rsa.

Yourpublickeyhasbeensavedin/home/hadoop/.ssh/id_rsa.pub.

这将在/home/hadoop/.ssh/目录下生成一个私钥id_rsa和一个公钥id_rsa.pub。

 

(b)将所有datanode节点的公钥id_rsa.pub传送到namenode上:

DataNode1上执行命令:

scp/home/hadoop/.ssh/id_rsa.pubhadoop@NameNode:

/home/hadoop/.ssh/id_rsa.pub.datanode1

......

DataNodeN上执行命令:

scp/home/hadoop/.ssh/id_rsa.pubhadoop@NameNode:

/home/hadoop/.ssh/id_rsa.pub.datanodeN

DataNode1

DataNode2

DataNode3

DataNode4

 

检查一下是否都已传输过来

各个数据节点的公钥已经传输过来。

 

(c)namenode节点上综合所有公钥(包括自身)并传送到所有节点上

[hadoop@NameNode.ssh]$catid_rsa.pub>>authorized_keys这是namenode自己的公钥

[hadoop@NameNode.ssh]$catid_rsa.pub.datanode1>>authorized_keys

[hadoop@NameNode.ssh]$catid_rsa.pub.datanode2>>authorized_keys

[hadoop@NameNode.ssh]$catid_rsa.pub.datanode3>>authorized_keys

[hadoop@NameNode.ssh]$catid_rsa.pub.datanode4>>authorized_keys

chmod644~/.ssh/authorized_keys

 

 

使用SSH协议将namenode的公钥信息authorized_keys复制到所有DataNode的.ssh目录下。

scpauthorized_keysdata节点ip地址:

/home/hadoop/.ssh

scp~/.ssh/authorized_keyshadoop@DataNode1:

/home/hadoop/.ssh/authorized_keys

scp~/.ssh/authorized_keyshadoop@DataNode2:

/home/hadoop/.ssh/authorized_keys

scp~/.ssh/authorized_keyshadoop@DataNode3:

/home/hadoop/.ssh/authorized_keys

scp~/.ssh/authorized_keyshadoop@DataNode4:

/home/hadoop/.ssh/authorized_keys

从这里就可以看到,当配置好hosts之后,就可以直接以机器名来访问各个机器,不用再记忆各个机器的具体IP地址,当集群中机器很多且IP不连续时,就发挥出威力来了。

从上图可以看到,将authorized_keys分发给各个节点之后,可以直接ssh登录,不再需要密码。

这样配置过后,namenode可以无密码登录所有datanode,可以通过命令

“sshDataNode1(2,3,4)”来验证。

配置完毕,在namenode上执行“sshNameNode,所有数据节点”命令,因为ssh执行一次之后将不会再询问。

在各个DataNode上也进行“sshNameNode,所有数据节点”命令。

至此,所有的节点都能相互访问,下一步开始配置jdk

3JDK安装和Java环境变量配置

3.1安装JDK1.6

1.下载JDK。

选定linux环境版本,下载到的文件是:

jdk-6u41-linux-x64.bin

2.Namenode节点以root用户创建JDK安装目录。

在Linux系统硬盘系统文件夹usr/local下创建一个文件夹Java。

命令:

mkdir–P/usr/local/java

3.复制JDK安装包到系统指定文件夹。

把下载的安装文件(jdk-6u41-linux-x64.bin)拷到linux路径/usr/local/java下。

4.给安装文件赋予权限。

a).进入目录,命令:

cd/usr/local/java

b).赋予权限,命令:

chmod+xjdk-6u41-linux-x64.bin

(如果因权限问题执行失败,则加上su,即suchmodu+xjdk-6u41-linux-x64.bin)

5安装JDK。

开始安装,在控制台执行命令:

./jdk-6u41-linux-x64.bin

(如果因权限问题执行失败,则加上su,即sud./jdk-6u41-linux-x64.bin)

文件会被安装到当前目录/usr/local/java/jdk1.6.0_41

删除安装文件rmjdk-6u41-linux-x64.bin

安装完成后,修改/usr/local/java目录拥有着为hadoop用户,

chown-Rhadoop:

hadoop/usr/local/java

然后将/usr/local/java目录需要复制到所有数据节点上。

scp -r /usr/local/java root@datanode1:

/usr/local/

………

3.2Java环境变量配置

root用户登陆,命令行中执行命令”vim/etc/profile”,并加入以下内容,配置环境变量(注意/etc/profile这个文件很重要,后面Hadoop的配置还会用到)。

#setjavaenvironment

#setjavaenvironment

JAVA_HOME=/usr/local/java/jdk1.6.0_41

PATH=$JAVA_HOME/bin:

$PATH

CLASSPATH=.:

$JAVA_HOME/lib/dt.jar:

$JAVA_HOME/lib/tools.jar

exportJAVA_HOMECLASSPATHPATH

保存并退出,执行以下命令使配置生效

chmod+x/etc/profile

source/etc/profile

配置完毕,在命令行中使用命令“java-version”可以判断是否成功。

在hadoop用户下测试java–version,一样成功。

a).输入命令打印三个环境变量的值:

echo$JAVA_HOME

echo$CLASSPATH

echo$PATH

b).正确的结果如下:

[root@NameNode~]#echo$JAVA_HOME

/usr/local/java/jdk1.6.0_41

[root@NameNode~]#echo$CLASSPATH

.:

/usr/local/java/jdk1.6.0_41/lib/dt.jar:

/usr/local/java/jdk1.6.0_41/lib/tools.jar

[root@NameNode~]#echo$PATH

/usr/local/java/jdk1.6.0_41/bin:

/usr/lib64/qt-3.3/bin:

/usr/local/sbin:

/usr/local/bin:

/sbin:

/bin:

/usr/sbin:

/usr/bin:

/root/bin

[root@NameNode~]#

将Namenode上的/etc/profile复制到所有数据节点上。

操作步骤如下:

root用户登录namenode;

执行命令:

scp/etc/profileroot@(datanode1):

/etc/profile

……

scp/etc/profileroot@(datanoden):

/etc/profile

并在各个节点执行source/etc/profile使其生效

4Hadoop集群配置

在namenode上执行:

Hadoop用户登录。

下载hadoop-0.20.2,将其解压到/usr/local/hadoop目录下,

解压后目录形式是/usr/local/hadoop/hadoop-0.20.2。

使用如下命令:

tarzxvfhadoop-0.20.2.tar.gz

(1)配置Hadoop的配置文件

(a)root下用户配置hadoop-env.sh

$vim/usr/local/hadoop/hadoop-0.20.2/conf/hadoop-env.sh

#setjavaenvironment

exportJAVA_HOME=/usr/local/java/jdk1.6.0_41/

exportHADOOP_HOME_WARN_SUPPRESS=1

exportHADOOP_CLASSPATH=/usr/local/hadoop/hadoop-0.20.2:

/usr/local/hadoop/hadoop-0.20.2/lib

(b)root用户配置/etc/profile

#setjavaenviroment

exportHADOOP_HOME=/usr/local/hadoop/hadoop-0.20.2

exportHADOOP_HOME_WARN_SUPPRESS=1

JAVA_HOME=/usr/local/java/jdk1.6.0_41

JRE_HOME=/usr/local/java/jdk1.6.0_41/jre

PATH=$JAVA_HOME/bin:

$JRE_HOME/bin:

$HADOOP_HOME/bin:

$PATH

CLASSPATH=.:

$JAVA_HOME/bin/dt.jar:

$JAVA_HOME/lib/tools.jar

exportJAVA_HOMECLASSPATHPATH

 

修改完,各个节点重启/etc/profile

[root@NameNode~]#source/etc/profile

(c)配置/usr/local/hadoop/hadoop-0.20.2/conf/hadoop-site.xml

Hadoop-0.20.2之后的版本请分别配置core-site.xml,hdfs-site.xml和mapred-site.xml三个配置文件。

配置文件名(xml)

字段名

字段值

说明

core-site

fs.default.name

hdfs:

//NameNode:

9000

 

hadoop.tmp.dir

/-home/hadoop/tmp

临时目录

hdfs-site

dfs.name.dir

/home/hadoop/hdfs/name

namenode上存储hdfs名字空间元数据

dfs.data.dir

home/hadoop/hdfs/data

datanode上数据块的物理存储位置

dfs.replication

3

副本个数,不配置默认是3,应小于datanode机器数量

mapred-site

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

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1