Hadoop220集群安装.docx

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

Hadoop220集群安装.docx

《Hadoop220集群安装.docx》由会员分享,可在线阅读,更多相关《Hadoop220集群安装.docx(17页珍藏版)》请在冰点文库上搜索。

Hadoop220集群安装.docx

Hadoop220集群安装

Hadoop最新安装手册

一、Hadoop2.2.0完全分布式集群平台安装设置:

HDFSHA架构:

在一个典型的HDFSHA场景中,通常由两个NameNode组成,一个处于active状态,另一个处于standby状态。

ActiveNameNode对外提供服务,比如处理来自客户端的RPC请求,而StandbyNameNode则不对外提供服务,仅同步activenamenode的状态,以便能够在它失败时快速进行切换。

为了能够实时同步Active和Standby两个NameNode的元数据信息(实际上editlog),需提供一个共享存储系统,可以是NFS、QJM(QuorumJournalManager)或者Bookeeper,ActiveNamenode将数据写入共享存储系统,而Standby监听该系统,一旦发现有新数据写入,则读取这些数据,并加载到自己内存中,以保证自己内存状态与ActiveNameNode保持基本一致,如此这般,在紧急情况下standby便可快速切为activenamenode。

注意,在Hadoop2.0中,不再需要secondarynamenode或者backupnamenode,它们的工作由Standbynamenode承担。

本文将重点介绍基于QJM的HA解决方案。

在该方案中,主备NameNode之间通过一组JournalNode同步元数据信息,一条数据只要成功写入多数JournalNode即认为写入成功。

通常配置奇数个(2N+1)个JournalNode,这样,只要N+1个写入成功就认为数据写入成功,此时最多容忍N-1个JournalNode挂掉,比如3个JournalNode时,最多允许1个JournalNode挂掉,5个JournalNode时,最多允许2个JournalNode挂掉。

基于QJM的HDFS架构如下

前提条件:

1、首先在每台Linux电脑上面安装好JDK6或其以上版本,并设置好JAVA_HOME等,测试一下java、javac、jps等命令是否可以在终端使用,如何配置JDK这里就不说了;

2、在每台Linux上安装好SSH,如何安装请参加《Linux平台下安装SSH》。

后面会说如何配置SSH无密码登录。

有了上面的前提条件之后,我们接下来就可以进行安装Hadoop分布式平台了。

步骤如下:

1、先设定电脑的IP为静态地址:

CentOS下设置IP的方式:

在里面添加下面语句:

里面的IPADDR地址设置你想要的,我这里是10.10.141.14。

设置好后,需要让IP地址生效,运行下面命令:

然后运行ifconfig检验一下设置是否生效:

可见IP地址已经设置为10.10.141.14了。

2、设置各个主机的hostname

CentOS设置hostname步骤如下:

将里面的HOSTNAME修改为你想要的hostname,我这里是取hadoop-active

HOSTNAME=hadoop-active

查看设置是否生效,运行下面命令

3、在所有电脑的/etc/hosts添加以下配置:

其实就是所有电脑的静态IP地址和其hostname的对应关系。

检验所有机器配置是否修改生效,可以用ping来查看

如果上面的命令可以ping通,说明配置成功。

4、设置SSH无密码登陆

终端中执行:

[hadoop@hadoop~]$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.

Thekeyfingerprintis:

5b:

47:

52:

a7:

1e:

1c:

4d:

98:

d7:

04:

eb:

d9:

0e:

5f:

dd:

3dhadoop@hadoop

Thekey'srandomartimageis:

+--[RSA2048]----+

|o=++.|

|o+o..|

|.=..|

|+oo+|

|S.o+E*|

|o.+o|

|o|

||

||

+-----------------+

[hadoop@hadoop~]$

cp/home/hadoop/.ssh/id_rsa.pub/home/hadoop/.ssh/authorized_keys

[hadoop@hadoop~]$chmod644/home/hadoop/.ssh/authorized_keys

[hadoop@hadoop~]$sshlocalhost//测试是否成功

Lastlogin:

ThuDec814:

23:

462011fromlocalhost.localdomain

[hadoop@hadoop~]$exit

logout

Connectiontolocalhostclosed.

catid_rsa.pub>>.ssh/authorized_keys

5、下载解压hadoop-2.2.0.tar.gz:

下载方式不再赘述,可以直接

运行完上面的命令之后,hadoop-2.2.0.tar.gz文件将会保存在/home/$user/Downloads/hadoop里面,然后解压:

之后将会在hadoop文件夹下面生成hadoop-2.2.0文件夹

6、配置Hadoop的环境变量

在/etc/profile文件的末尾加上以下配置

在终端输入hadoop命令查看Hadoop的环境变量是否生效:

7、编译HadoopNative包

WARNorg.apache.hadoop.util.NativeCodeLoader:

Unabletoloadnative-hadooplibraryforyourplatform…usingbuiltin-javaclasseswhereapplicable

在网上查了一下发现Apache官网提供的是32位编译的,在64位服务器上会有问题。

而且官方竟然没有提供64位版本,要使用得自己编译。

7.1、编译环境准备

经过一次次编译失败,翻遍了谷歌、XX之后终于凑齐了下面这些包。

下面的服务器环境都基于Centos的,其它发行版Linux可能会有不同。

1、GCC、CMake、openssl、JDK。

2、hadoop-2.2.0-src.tar.gz(http:

//hadoop.apache.org/releases.html#Download)

3、apache-ant-1.9.2-bin.tar.gz(http:

//ant.apache.org/bindownload.cgi)

4、apache-maven-3.0.5-bin.tar.gz(http:

//maven.apache.org/download.cgi)

注意:

此处最新的3.1.1版有Bug,缺少依赖包。

详细说明如下所示:

https:

//cwiki.apache.org/confluence/display/MAVEN/AetherClassNotFound

5、findbugs-2.0.2.tar.gz(http:

//sourceforge.jp/projects/sfnet_findbugs/releases/)

注意:

被墙,只能进sourceforge.jp

6、protobuf-2.5.0.tar.gz(

7、zlib-devel-1.2.3-3.x86_64.rpm

7.2、依赖环境配置

安装没啥好说的了,大部分都是tar包,解开就能用。

只有protobuf需要make一下。

配置好环境后不要忘了source/etc/profile一下,否则不会生效。

下面的图是环境变量配置明细:

7.3、编译

安装好了上面的依赖后就可以编译了。

mvnpackage-Pdist,native,docs-DskipTests-Dtar

然后就是漫长的等待,真的很漫长(用小时来做单位的)。

当你看到一串SUCCESS的时候,那么恭喜你成功了。

7.4、生成打包文件

到这一步就简单了,在/data/java/tools/hadoop-2.2.0-src/hadoop-dist/target/目录下,可以看到编译好的hadoop-2.2.0.tar.gz包静静的趴在那里,现在你可以进行安装了。

8、修改Hadoop的配置文件

7.1、修改Hadoop的hadoop-env.sh配置文件,设置jdk所在的路径:

找到JAVA_HOME,并设置为服务器JDK所在的绝对路径。

同时配置HADOOP_HOME,设置为服务器hadoop所在的绝对路径。

7.2、依次修改core-site.xml、yarn-site.xml、mapred-site.xml和hdfs-site.xml配置文件,主要分析core-site.xml与hdfs-site.xml配置信息。

Core-site.xml配置如下:

Hadoop.tmp.dir是hadoop文件系统依赖的基础配置,很多配置都依赖它。

它默认的位置是在/tmp/{$user}下面,但是在/tmp路径下的存储是不安全的,因为linux一次重启,文件就可能被删除。

所以建议配置该路径到持久化目录。

fs.defaultFS整个Federation集群对外提供服务的NS逻辑名称,这里的协议不再是hdfs,而是新引入的viewfs,这个逻辑名称会在下面的挂载表中用到。

缺省文件服务的协议和NS逻辑名称,和hdfs-site里的对应,此配置替代了1.0里的fs.default.name。

Ha.zookeeper.quorum:

”AlistofZooKeeperserveraddresses,separatedbycommas,thataretobeusedbytheZKFailoverControllerinautomaticfailover.”。

配置三个Zookper节点,用于ZKFC故障转移。

hdfs-site.xml配置如下:

dfs.nameservicesHDFS命名服务的逻辑名称,可用户自己定义,比如mycluster,注意,该名称将被基于HDFS的系统使用,比如Hbase等,此外,需要你想启用HDFSFederation,可以通过该参数指定多个逻辑名称,并用“,”分割。

dfs.ha.namenodes.[$nameserviceID]命名服务下包含的NameNode列表,可为每个NN指定一个自定义的ID名称,比如命名服务mycluster下有两个NameNode,分别命名为nn1和nn2。

注意,目前每个命名服务最多配置两个NameNode

dfs.namenode.rpc-address.[$nameserviceID].[$namenodeID]为每个NN设置RPC地址。

这里面提到了两个RPC端口,分别是dfs.namenode.rpc-address和dfs.namenode.servicerpc-address。

如果只配置dfs.namenode.rpc-address,那么NameNode-Client和NameNode-DataNode之间的RPC都走的是这个端口。

如果配置了后者与前者不同,那么dfs.namenode.rpc-address表示的是NameNode-Client之间的RPC,而dfs.namenode.servicerpc-address表示的是NameNode-DataNode之间的RPC。

之所以要区别开来,我想主要是因为datanode和namenode通讯时不会影响client和namenode的通讯,因为同一个端口同时打开的句柄毕竟是预先设定的,缺省为10个。

dfs.namenode.http-address.[$nameserviceID].[$namenodeID]为每个NN设置对外的HTTP地址

dfs.namenode.shared.edits.dir设置一组journalNode的URI地址,activeNameNode将editlog写入这些JournalNode,而standbyNameNode读取这些editlog,并作用在内存中的目录树中,其中,journalId是该命名空间的唯一ID。

假设你有三台journalNode,即,和,则可如上配置。

dfs.journalnode.edits.dir设置journaldata的存储路径

dfs.client.failover.proxy.provider.[$nameserviceID]设置客户端与activeNameNode进行交互的Java实现类,DFS客户端通过该类寻找当前的activeNameNode。

该类可由用户自己实现,默认实现为ConfiguredFailoverProxyProvider

dfs.ha.fencing.methods主备架构解决单点故障问题时,必须要认真解决的是脑裂问题,即出现两个master同时对外提供服务,导致系统处于不一致状态,可能导致数据丢失等潜在问题。

在HDFSHA中,JournalNode只允许一个NameNode写数据,不会出现两个activeNameNode的问题,但是,当主备切换时,之前的activeNameNode可能仍在处理客户端的RPC请求,为此,需要增加隔离机制(fencing)将之前的activeNameNode杀死。

HDFS允许用户配置多个隔离机制,当发生主备切换时,将顺次执行这些隔离机制,直到一个返回成功。

Hadoop2.0内部打包了两种类型的隔离机制,分别是shell和sshfence。

这里配置sshfence

sshfence通过ssh登录到前一个activeNameNode并将其杀死。

为了让该机制成功执行,需配置免密码ssh登陆,这可通过参数dfs.ha.fencing.ssh.private-key-files设置一个私钥文件。

需要一些目录放置fsimage和edits,对应配置dfs.namenode.name.dir、dfs.namenode.edits.dir

需要指定一个目录来保存blocks,对应配置

dfs.replication确定datablock的副本数目,hadoop基于rackawareness(机架感知)默认复制3份分block,(同一个rack下两个,另一个rack下一份,按照最短距离确定具体所需block,一般很少采用跨机架数据块,除非某个机架down了)。

这个是块大小的设置,也就是说文件按照多大的size来切分块。

一般来说,块的大小也决定了你map的数量。

举个例子:

我现在有一个1T的文件,如果我的块size设置是默认的64M,那么在HDFS上产生的块将有1024000/64=16000块。

允许文件以rest形式被访问 

dfs.permission是否开启文件权限验证,true开启,false不进行读写权限验证。

(注:

dfs.permission开启与否dfspermission信息都不会改变后丢失,chown、chgrp、chmod操作也始终会验证权限,dfspermission信息只在namenode里,并不在danode里与blocks关联)

yarn-site.xml配置如下:

mapred-site.xml配置如下:

Slaves配置如下:

配置好Hadoop的相关东西之后,请将hadoop-2.2.0整个文件夹分别拷贝到其他master和datanode主机上面去,设置都不需要改!

9、关闭防火墙

关闭防火墙

防火墙会影响外部对linux机器的访问,简单起见就直接关闭防火墙服务。

[hadoop@hadoop~]$sudoserviceiptablesstop//停止防火墙服务

[hadoop@hadoop~]sudochkconfig--level35iptablesoff//永久关闭防火墙

关闭Selinux

Selinux会进行操作和访问限制,避免配置就直接关闭该功能。

[hadoop@hadoop~]$sudovi/etc/sysconfig/selinux//编辑selinux配置文件

SELINUX=disabled#设置selinux禁用

10、查看Hadoop是否运行成功

启动JN:

11、[hadoop@hadoop~]$cd/usr/local/hadoop2.0/hadoop/sbin/;./hadoop-daemon.shstartjournalnode

格式化NameNode:

[hadoop@hadoop~]$hadoopnamenode–format

格式化JN

[hadoop@hadoop~]$hadoopnamenode-initializeSharedEdits

启动Zookeeper:

[hadoop@hadoop~]$zkServer.shstart

启动Hadoop:

[hadoop@hadoop~]$cdsbin./star-dfs.sh

启动Yarn:

[hadoop@hadoop~]$cdsbin./start-yarn.sh 

启动Hbase:

[hadoop@hadoop~]$start-hbase.sh

集群方式启动Hive:

[hadoop@hadoop~]$hive:

hive-hiveconfhbase.zookeeper.quorum=slave

执行jps看是否启动成功,只有7个进程都启动了才对。

在Web界面上查看是否启动成功,如果界面显示如下(standbynamenode的界面),则启动成功:

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

当前位置:首页 > 总结汇报 > 学习总结

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

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