最新Hadoop集群部署最全面.docx

上传人:b****5 文档编号:8885632 上传时间:2023-05-15 格式:DOCX 页数:13 大小:21.16KB
下载 相关 举报
最新Hadoop集群部署最全面.docx_第1页
第1页 / 共13页
最新Hadoop集群部署最全面.docx_第2页
第2页 / 共13页
最新Hadoop集群部署最全面.docx_第3页
第3页 / 共13页
最新Hadoop集群部署最全面.docx_第4页
第4页 / 共13页
最新Hadoop集群部署最全面.docx_第5页
第5页 / 共13页
最新Hadoop集群部署最全面.docx_第6页
第6页 / 共13页
最新Hadoop集群部署最全面.docx_第7页
第7页 / 共13页
最新Hadoop集群部署最全面.docx_第8页
第8页 / 共13页
最新Hadoop集群部署最全面.docx_第9页
第9页 / 共13页
最新Hadoop集群部署最全面.docx_第10页
第10页 / 共13页
最新Hadoop集群部署最全面.docx_第11页
第11页 / 共13页
最新Hadoop集群部署最全面.docx_第12页
第12页 / 共13页
最新Hadoop集群部署最全面.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

最新Hadoop集群部署最全面.docx

《最新Hadoop集群部署最全面.docx》由会员分享,可在线阅读,更多相关《最新Hadoop集群部署最全面.docx(13页珍藏版)》请在冰点文库上搜索。

最新Hadoop集群部署最全面.docx

最新Hadoop集群部署最全面

Hadoop集群配置(最全面)

您的评价:

     

 收藏该经验

        通常,集群里的一台机器被指定为 NameNode,另一台不同的机器被指定为JobTracker。

这些机器是masters。

余下的机器即作为DataNode也作为TaskTracker。

这些机器是slaves\

官方地址:

(http:

//hadoop.apache.org/common/docs/r0.19.2/cn/cluster_setup.html)

1先决条件

1.确保在你集群中的每个节点上都安装了所有必需软件:

sun-JDK ,ssh,Hadoop

2.JavaTM1.5.x,必须安装,建议选择Sun公司发行的Java版本。

3.ssh 必须安装并且保证 sshd一直运行,以便用Hadoop脚本管理远端Hadoop守护进程。

2 实验环境搭建

 

  2.1 准备工作

    操作系统:

Ubuntu

    部署:

Vmvare

    在vmvare安装好一台Ubuntu虚拟机后,可以导出或者克隆出另外两台虚拟机。

    准备机器:

一台master,若干台slave,配置每台机器的/etc/hosts保证各台机器之间通过机器名可以互访,例如:

   10.64.56.76node1(master)

   10.64.56.77node2(slave1)

   10.64.56.78node3(slave2)

    主机信息:

机器名

IP地址

作用

Node1

10.64.56.76

NameNode、JobTracker

Node2

10.64.56.77

DataNode、TaskTracker

Node3

10.64.56.78

DataNode、TaskTracker

为保证环境一致先安装好JDK和ssh:

2.2安装JDK

#安装JDK

$sudoapt-getinstallsun-java6-jdk1.2.3    

这个安装,java执行文件自动添加到/usr/bin/目录。

验证shell命令:

java-version看是否与你的版本号一致。

2.3下载、创建用户

在所有的机器上都建立相同的目录,也可以就建立相同的用户,以该用户的home路径来做hadoop的安装路径。

例如我在所有的机器上都建立了/home/hadoop/install

$useraddhadoop

$cd /home/hadoop

2.4安装ssh和配置

1)安装:

sudoapt-getinstallssh 

2) 配置:

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

以本文中的三台机器为例,现在node1是主节点,他须要连接node2和node3。

须要确定每台机器上都安装了ssh,并且datanode机器上sshd服务已经启动。

(说明:

hadoop@hadoop~]$ssh-keygen -t rsa

这个命令将为hadoop上的用户hadoop生成其密钥对,询问其保存路径时直接回车采用默认路径,当提示要为生成的密钥输入passphrase的时候,直接回车,也就是将其设定为空密码。

生成的密钥对id_rsa,id_rsa.pub,默认存储在/home/hadoop/.ssh目录下然后将id_rsa.pub的内容复制到每个机器(也包括本机)的/home/dbrg/.ssh/authorized_keys文件中,如果机器上已经有authorized_keys这个文件了,就在文件末尾加上id_rsa.pub中的内容,如果没有authorized_keys这个文件,直接复制过去就行.)

3)首先设置namenode的ssh为无需密码的、自动登录。

切换到hadoop用户

$suhadoop

cd/home/hadoop

$ssh-keygen-trsa然后一直按回车

完成后,在home跟目录下会产生隐藏文件夹.ssh

$cd.ssh

之后ls查看文件

cpid_rsa.pubauthorized_keys

测试:

sshlocalhost发现链接成功,并且无需密码。

 

 

4)复制到node2和node3上

[hadoop@hadoop.ssh]$scpauthorized_keysnode2:

/home/hadoop/.ssh/

[hadoop@hadoop.ssh]$scpauthorized_keysnode3:

/home/hadoop/.ssh/

输入yes来继续。

这会把该服务器添加到你的已知主机的列表中

Theauthenticityofhost‘test(192.168.9.111)’can’tbeestablished.

RSAkeyfingerprintis03:

e0:

30:

cb:

6e:

13:

a8:

70:

c9:

7e:

cf:

ff:

33:

2a:

67:

30.

Areyousureyouwanttocontinueconnecting(yes/no)?

∙这里会提示输入密码,输入hadoop账号密码就可以了。

改动你的authorized_keys文件的许可权限:

[hadoop@hadoop.ssh]$chmod644authorized_keys

检查下能不能配置成功,从hadoop机器上ssh到node2和node3,如果不须要输入密码则配置成功,如果还须要请检查上面的配置能不能正确。

2.5安装Hadoop

 

#切换为hadoop用户

suhadoop

wget

下载安装包后,直接解压安装即可:

$tar-zxvfhadoop-0.20.203.0rc1.tar.gz

1)安装Hadoop集群通常要将安装软件解压到集群内的所有机器上。

并且安装路径要一致,如果我们用HADOOP_HOME指代安装的根路径,通常,集群里的所有机器的HADOOP_HOME路径相同。

2) 如果集群内机器的环境完全一样,可以在一台机器上配置好,然后把配置好的软件即hadoop-0.20.2整个文件夹拷贝到其他机器的相同位置即可。

3)可以将Master上的Hadoop通过scp拷贝到每一个Slave相同的目录下,同时根据每一个Slave的Java_HOME 的不同修改其hadoop-env.sh 。

4)   为了方便,使用hadoop命令或者start-all.sh等命令。

修改Master上/etc/profile:

 新增以下内容:

(具体的内容根据你的安装路径修改,这步只是为了方便使用)                                                                                                                                                                                                                                                                                                                         e  exportHADOOP_HOME=/home/hadoop/hadoop/install

exportPATH=$PATH:

$HADOOP_HOME/bin

修改完毕后,执行source/etc/profile 来使其生效。

 

6)配置conf/hadoop-env.sh文件

 

配置conf/hadoop-env.sh文件

#添加

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

这里修改为你的jdk的安装位置。

测试hadoop安装:

Bin/hadoopjarhadoop-0.20.2-examples.jarwordcountconf/ /tmp/out

 

3.集群配置(所有节点相同)

3.1配置文件:

conf/core-site.xml

xmlversion="1.0"?

>

xml-stylesheettype="text/xsl"href="configuration.xsl"?

>

 fs.default.name

 hdfs:

//node1:

49000

 hadoop.tmp.dir

 /home/hadoop/hadoop_home/var

 

1)fs.default.name是NameNode的URI。

hdfs:

//主机名:

端口/

2)hadoop.tmp.dir:

Hadoop的默认临时路径,这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。

不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。

3.2配置文件:

conf/mapred-site.xml

 

xmlversion="1.0"?

>

xml-stylesheettype="text/xsl"href="configuration.xsl"?

>

 mapred.job.tracker

 node1:

49001

 mapred.local.dir

 /home/hadoop/hadoop_home/var

1)mapred.job.tracker是JobTracker的主机(或者IP)和端口。

主机:

端口。

3.3配置文件:

conf/hdfs-site.xml

xmlversion="1.0"?

>

xml-stylesheettype="text/xsl"href="configuration.xsl"?

>

dfs.name.dir

/home/hadoop/name1,/home/hadoop/name2#hadoop的name目录路径

 

dfs.data.dir

/home/hadoop/data1,/home/hadoop/data2

 dfs.replication

 

--我们的集群又两个结点,所以rep两份-->

 2

 

1)  dfs.name.dir是NameNode持久存储名字空间及事务日志的本地文件系统路径。

当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。

2)  dfs.data.dir是DataNode存放块数据的本地文件系统路径,逗号分割的列表。

当这个值是逗号分割的目录列表时,数据将被存储在所有目录下,通常分布在不同设备上。

3)dfs.replication是数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错。

注意:

此处的name1、name2、data1、data2目录不能预先创建,hadoop格式化时会自动创建,如果预先创建反而会有问题。

3.4配置masters和slaves主从结点

配置conf/masters和conf/slaves来设置主从结点,注意最好使用主机名,并且保证机器之间通过主机名可以互相访问,每个主机名一行。

vimasters:

输入:

node1

vislaves:

输入:

node2

node3

配置结束,把配置好的hadoop-0.20.2文件夹拷贝到其他集群的机器中,并且保证上面的配置对于其他机器而言正确,例如:

如果其他机器的Java安装路径不一样,要修改conf/hadoop-env.sh 

$ scp-r/home/hadoop/hadoop-0.20.2root@node2:

/home/hadoop/

 

4hadoop启动

4.1格式化一个新的分布式文件系统

先格式化一个新的分布式文件系统

$ cdhadoop-0.20.2

$ bin/hadoopnamenode-format

成功情况下系统输出:

12/02/0600:

46:

50INFOnamenode.NameNode:

STARTUP_MSG:

/************************************************************

STARTUP_MSG:

StartingNameNode

STARTUP_MSG:

  host=ubuntu/127.0.1.1

STARTUP_MSG:

  args=[-format]

STARTUP_MSG:

  version=0.20.203.0

STARTUP_MSG:

  build=http:

//svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20-security-203-r1099333;compiledby'oom'onWedMay 407:

57:

50PDT2011

************************************************************/

12/02/0600:

46:

50INFOnamenode.FSNamesystem:

fsOwner=root,root

12/02/0600:

46:

50INFOnamenode.FSNamesystem:

supergroup=supergroup

12/02/0600:

46:

50INFOnamenode.FSNamesystem:

isPermissionEnabled=true

12/02/0600:

46:

50INFOcommon.Storage:

Imagefileofsize94savedin0seconds.

12/02/0600:

46:

50INFOcommon.Storage:

Storagedirectory/opt/hadoop/hadoopfs/name1hasbeensuccessfullyformatted.

12/02/0600:

46:

50INFOcommon.Storage:

Imagefileofsize94savedin0seconds.

12/02/0600:

46:

50INFOcommon.Storage:

Storagedirectory/opt/hadoop/hadoopfs/name2hasbeensuccessfullyformatted.

12/02/0600:

46:

50INFOnamenode.NameNode:

SHUTDOWN_MSG:

/************************************************************

SHUTDOWN_MSG:

ShuttingdownNameNodeatv-jiwan-ubuntu-0/127.0.0.1

************************************************************/

查看输出保证分布式文件系统格式化成功

执行完后可以到master机器上看到/home/hadoop//name1和/home/hadoop//name2两个目录。

在主节点master上面启动hadoop,主节点会启动所有从节点的hadoop。

4.2启动所有节点

$ bin/start-all.sh

系统输出:

startingnamenode,loggingto/usr/local/hadoop/logs/hadoop-hadoop-namenode-ubuntu.out

node2:

startingdatanode,loggingto/usr/local/hadoop/logs/hadoop-hadoop-datanode-ubuntu.out

node3:

startingdatanode,loggingto/usr/local/hadoop/logs/hadoop-hadoop-datanode-ubuntu.out

node1:

startingsecondarynamenode,loggingto/usr/local/hadoop/logs/hadoop-hadoop-secondarynamenode-ubuntu.out

startingjobtracker,loggingto/usr/local/hadoop/logs/hadoop-hadoop-jobtracker-ubuntu.out

node2:

startingtasktracker,loggingto/usr/local/hadoop/logs/hadoop-hadoop-tasktracker-ubuntu.out

node3:

startingtasktracker,loggingto/usr/local/hadoop/logs/hadoop-hadoop-tasktracker-ubuntu.out

Asyoucanseeinslave'soutputabove,itwillautomaticallyformatit'sstoragedirectory(specifiedbydfs.data.dir)ifitisnotformattedalready.Itwillalsocreatethedirectoryifitdoesnotexistyet.

执行完后可以到master(node1)和slave(node1,node2)机器上看到/home/hadoop/hadoopfs/data1和/home/hadoop/data2两个目录。

4.3关闭所有节点

从主节点master关闭hadoop,主节点会关闭所有从节点的hadoop。

$ bin/stop-all.sh 

Hadoop守护进程的日志写入到${HADOOP_LOG_DIR}目录(默认是${HADOOP_HOME}/logs).

${HADOOP_HOME}就是安装路径.

 

5.测试

1)浏览NameNode和JobTracker的网络接口,它们的地址默认为:

NameNode-http:

//node1:

50070/

JobTracker-http:

//node2:

50030/

3)  使用netstat –nat查看端口49000和49001是否正在使用。

4) 使用jps查看进程

要想检查守护进程是否正在运行,可以使用jps命令(这是用于JVM进程的ps实用程序)。

这个命令列出5个守护进程及其进程标识符。

5)将输入文件拷贝到分布式文件系统:

$bin/hadoopfs-mkdirinput

$bin/hadoopfs-putconf/core-site.xmlinput

运行发行版提供的示例程序:

$bin/hadoopjarhadoop-0.20.2-examples.jargrepinputoutput'dfs[a-z.]+'

6.补充

Q:

bin/hadoopjarhadoop-0.20.2-examples.jargrepinputoutput'dfs[a-z.]+'什么意思啊?

A:

bin/hadoopjar(使用hadoop运行jar包)hadoop-0.20.2_examples.jar(jar包的名字)grep(要使用的类,后边的是参数)inputoutput'dfs[a-z.]+'

整个就是运行hadoop示例程序中的grep,对应的hdfs上的输入目录为input、输出目录为output。

Q:

什么是grep?

A:

Amap/reduceprogramthatcountsthematchesofaregexintheinput.

查看输出文件:

将输出文件从分布式文件系统拷贝到本地文件系统查看:

$bin/hadoopfs-getoutputoutput

$catoutput/*

或者

在分布式文件系统上查看输出文件:

$bin/hadoopfs-catoutput/*

统计结果:

root@v-jiwan-ubuntu-0:

~/hadoop/hadoop-0.20.2-bak/hadoop-0.20.2#bin/hadoopfs-catoutput/part-00000

3      dfs.class

2      dfs.period

1      dfs.file

1      dfs.replication

1      dfs.servers

1      dfsadmin

 

7.HDFS常用操作

 

hadoopdfs-ls列出HDFS下的文件

hadoopdfs-lsin列出HDFS下某个文档中的文件

hadoopdfs-puttest1.txttest上传文件到指定目录并且重新命名,只有所有的DataNode都接收完数据才算成功

hadoopdfs-getingetin从HDFS获取文件并且重新命名为getin,同put一

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

当前位置:首页 > 人文社科 > 文学研究

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

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