`

Avatar配置(转载)

阅读更多

Hadoop 双机热备-AvatarNode部署

转载自:http://blog.csdn.net/rzhzhz/article/details/7448453

Hadoop 双机热备

--AvatarNode部署

部署环境

虚拟机5台(1G内存,40G硬盘,ubuntu操作系统,Hadoop-0.20.2

hadoop1-virtual-machine  10.10.11.250 AvatarNode(primary)

hadoop2-virtual-machine  10.10.11.152 AvataDataNode

hadoop3-virtual-machine  10.10.11.160 AvataDataNode

hadoop4-virtual-machine  10.10.11.184 AvataDataNode

hadoop5-virtual-machine  10.10.12.25  AvatarNode(standby)

 

相关资源及描述

以下是Avatar方案部署相关的简单介绍。

1.首先关于Avatar方案对于Hadoop的备份是对Dfs的的单点备份,并不包括Mapred,因为Hadoop本身就不存在处理jobtracker单点故障的机制。

2.AvatarNode继承自Namenode,而并非对Namenode的修改,AvatarDataNode同样亦如此。故Avatar的启动机制是独立于Hadoop本身的启动机制。

3.在Avatar方案中,SecondaryNamenode的职责已包括在Standby节点中,故不需要再独立启动一个SecondaryNamenode

4.AvatarNode必须有NFS的支持,用以实现两个节点间事务日志(editlog)的共享。

5.FB提供的Avatar源码中暂时并不能实现PrimaryStandby之间的自动切换,可以借助于Zookeeperlease机制来实现自动切换。

6.PrimaryStandby之间的切换只包括从Standby切换到Primary,并不支持从Primary状态切换到Standby状态。

7.AvatarDataNode并不使用VIPAvatarNode通信,而是直接与PrimaryStandby通信,故需要使用VIP漂移方案来屏蔽两个节点间切换过程中的IP变换问题。有关与Zookeeper的整合,官方称将在之后的版本发布。

关于AvatarNode更详细的介绍,请参考http://blog.csdn.net/rzhzhz/article/details/7235789

部署

一、下载补丁包

         下载地址[HDFS-976]

         在主页面下载AvatarNode.20.patch这个补丁包(基于Hadoop-0.20.2),其他补丁包请参考官方介绍。

          

二、安装补丁包

1.     把下载好的AvatarNode.20.patch补丁包,放到hadoop的根目录下

2.     在hadoop根路径下输入命令patch –p0< AvatarNode.20.patch, 会把相关源码的修改写入java文件中。

3.  因为该补丁包中的Standby类(341行)中有一行代码调用了0.20.2中没有的方法fsImage.saveNamespace(true);把该行注释掉并改成0.20.2中方法fsImage.saveFSImage();

4.     修改org.apache.hadoop.hdfs.server.namenode.FSNamesystem类(4310行),注释掉checkSuperuserPrivilege();因为后面在启动standby的时候会因为ugi=null的错误导致standby无法正常启动。

三、编译

1.  首先修改hadoop根目录下build.xml,注释掉904行和908行。如下:

<targetname="forrest.check" unless="forrest.home"depends="java5.check">
<!--fail message="'forrest.home' is not defined. Please pass-Dforrest.home=&lt;base of Apache Forrest installation&gt; to Ant onthe command-line." /-->
</target>
<target name="java5.check" unless="java5.home">
<!--fail message="'java5.home' is not defined. 
Forrest requires Java 5.  Please pass -Djava5.home=&lt;base of Java5 distribution&gt; to Ant on the command-line." /-->
</target>

2.     在根目录下输入ant jar(对于编译package可以参考build.xml的代码)编译hadoop,编译后的jar包会在build目录下(hadoop-0.20.3-dev-core.jar), 拷贝该jar包到hadoop根目录下替换到原有的jar (啰嗦一句,hadoop启动时会先加载build目录下的class,所以当通过替换class修改jar包时请先把build目录暂时移除掉) 。

3.  进入src/contrib/highavailability目录下编译Avatar,编译后的jar包会在build/contrib/highavailability目录下(hadoop-${version}-highavailability.jar),拷贝该jar包到lib目录下。

4.     把2,3步中编译好的jar包分发到集群中所有机器的相应目录。

四、配置

1.     配置hdfs-site.xml

<?xmlversion="1.0"?>

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

 

<!-- Put site-specificproperty overrides in this file. -->

 

<configuration>

       <property>

               <name>dfs.name.dir</name>

               <value>/home/hadoop/name</value>

               <description>Determineswhere on the local filesystem the                       DFS name node shouldstore the name table. If this is a                 comma-delimited list ofdirectories then the name table is                      replicated in all of thedirectories, for redundancy.

               </description>

       </property>

       <property>

               <name>dfs.data.dir</name>

               <value>/home/hadoop/data</value>

               <description>

               </description>

       </property>

       <property>

               <name>dfs.http.address0</name>

                <value>hadoop1-virtual-machine:50070</value>

       </property>

       <property>

               <name>dfs.http.address1</name>

               <value>hadoop5-virtual-machine:50070</value>

       </property>

       <property>

               <name>dfs.name.dir.shared0</name>

               <value>/home/hadoop/share/shared0</value>

       </property>

       <property>

               <name>dfs.name.dir.shared1</name>

               <value>/home/hadoop/share/shared1</value>

       </property>

       <property>

               <name>dfs.name.edits.dir.shared0</name>

               <value>/home/hadoop/share/shared0</value>

       </property>

       <property>

               <name>dfs.name.edits.dir.shared1</name>

               <value>/home/hadoop/share/shared1</value>

       </property>

       <property>

           <name>dfs.replication</name>

               <value>3</value>

               <description>Defaultblock replication. The actual number of                    replications can bespecified when the file is created. The                     default isused ifreplication is not specified in create                        time.

               </description>

       </property>

</configuration>

参数说明:

1)  dfs.name.dir.shared0

AvatarNode(Primary)元数据存储目录,注意不能和dfs.name.dir目录相同

2)  dfs.name.dir.shared1

AvatarNode(Standby)元数据存储目录,注意不能和dfs.name.dir目录相同

3)  dfs.name.edits.dir.shared0

AvatarNode(Primary) edits文件存储目录,默认与               dfs.name.dir.shared0一致

4)  dfs.name.edits.dir.shared1

AvatarNode(Standby) edits文件存储目录,默认与          dfs.name.dir.shared1一致

5)  dfs.http.address0

AvatarNode(Primary) HTTP的监控地址

6)  dfs.http.address1

AvatarNode(Standby) HTTP的监控地址

7)  dfs.namenode.dn-address0/dfs.namenode.dn-address1

虽然在Avatar源码中有所涉及,但暂时并未用到

2.  配置core-site.xml

<?xmlversion="1.0"?>

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

 

<!-- Put site-specificproperty overrides in this file. -->

 

<configuration>

       <property>

               <name>hadoop.tmp.dir</name>

               <value>/home/hadoop/tmp</value>

               <description>A base forother temporary directories.

               </description>

       </property>

       <property>

               <name>fs.default.name</name>

               <value>hdfs://hadoop1-virtual-machine:9000</value>

               <description>The name ofthe default file system. Either the                    literal string"local" or a host:port for DFS.

               </description>

       </property>

       <property>

               <name>fs.default.name0</name>

               <value>hdfs://hadoop1-virtual-machine:9000</value>

               <description>The name ofthe default file system. Either the                    literal string"local" or a host:port for DFS.

               </description>

       </property>

       <property>

               <name>fs.default.name1</name>

               <value>hdfs://hadoop5-virtual-machine:9000</value>

               <description>The name ofthe default file system. Either the                    literal string"local" or a host:port for DFS.

               </description>

       </property>

</configuration>

参数说明:

1)  fs.default.name

当前AvatarNode IP地址和端口号,即PrimaryStandby的配置为各自的IP地址和端口号。

2)  fs.default.name0

AvatarNode(Primary) IP地址和端口号

3)  fs.default.name1

AvatarNode(Standby)  IP地址和端口号

3.     因为不涉及到mapred,故mapred-site.xml不用作修改,为原有集群配置即可。

4.     分发修改后的配置文件到集群节点并在PrimaryStandby节点上建立好配置文件中相应目录。

5.     建立NFS,实现PrimaryStandby shared0目录的数据共享。有关NFS的配置请参考http://blog.csdn.net/rzhzhz/article/details/7056732

6.     格式化PrimaryStandby,这里可以采用hadoop本身的格式化命令,也可以采用AvatarNode的格式化命令(bin/hadoop org.apache.hadoop.hdfs.AvatarShell -format),但此时shared1目录不能为空,此处有点多余。建议采用hadoop本身的格式化命令在Primary上格式化后,并且把name目录下的文件复制到shared0目录下。然后再在Standby上复制shared0目录下的文件到shared1目录下。

五、启动

1.     由于不涉及jobtracker的单点,在这里我们只启动hdfs相关线程。PrimaryStandby两个namenode此处Standby包括SecondaryNamenode的职责3AvatarDataNode数据节点。

2.     在Primary节点hadoop根目录下启动AvatarNodePrimary

      bin/hadooporg.apache.hadoop.hdfs.server.namenode.AvatarNode –zero

3.     在Standby节点hadoop根目录下启动AvatarNodeStandby

      bin/hadooporg.apache.hadoop.hdfs.server.namenode.AvatarNode -one –standby

4.     依次在数据节点hadoop根目录下启动AvatarDataNode

      bin/hadooporg.apache.hadoop.hdfs.server.datanode.AvatarDataNode

5.     其他相关命令

bin/hadoop   org.apache.hadoop.hdfs.server.namenode.AvatarNode,后面可    选参数有

[-standby] | [-sync] | [-zero] | [-one] | [-format] |  [-upgrade]   | [-rollback] | [-finalize] | [-importCheckpoint]

  

1)  bin/hadoop org.apache.hadoop.hdfs.AvatarShell –showAvatar 查看当前AvatarNode的状态

 

2)     bin/hadoop org.apache.hadoop.hdfs.AvatarShell  -setAvatar primary 把当前Standby节点升级Primary节点

 

3)  bin/hadoop org.apache.hadoop.hdfs.AvatarShell -setAvatar standby

 

集群测试

1.     访问集群的web

(Primary)http://hadoop1-virtual-machine:50070

(Standby)http://hadoop5-virtual-machine:50070

可见所有的AvatarDataNode都已注册到两个namenodePrimary处于正常状态,而Standby处于Safemode状态,只可读不可写。可通过AvatarShell命令查看当前AvatarNode的状态(PrimaryStandby)。

2.     存储相关数据到集群,集群正常工作。

3.     KillPrimary节点的AvatartNode线程,在Standby把当前升级为Prirmary,数据并未丢失,集群正常工作(此时web端不能正常访问文件系统,通过shell命令可查看集群数据)。但由于Avatar有转换限制,只能由Standby转换成Primary,故一次故障后,由Standby上升为Primary的节点并不能重新降级为Standby,所以不能实现像Master/Slave那种自由切换。

分享到:
评论

相关推荐

    Avatar

    《Avatar》在IT行业中可能指的是不同的事物,但在这里结合“字体”的标签,我们可以理解为一款名为"Avatar"的字体设计或者相关的图形用户界面元素。在计算机领域,字体扮演着至关重要的角色,它不仅影响文本的可读性...

    Avatar Maker Pro - 3D avatar from a single selfie.rar

    《Avatar Maker Pro - 3D avatar from a single selfie》是一个创新的软件工具,它利用先进的图像处理和3D建模技术,使用户能够通过一张简单的自拍照片创建逼真的3D头像。这款工具专为那些希望在虚拟世界中拥有个性...

    Unity Avatar角色换装实例

    在Unity中,Avatar是一个代表角色骨骼结构和皮肤绑定的配置,它允许开发者将任何3D模型转换为与Unity引擎兼容的角色。在这个“Unity Avatar角色换装实例”中,我们将探讨如何在Unity中实现角色的换装功能。 首先,`...

    Laravel开发-laravel-avatar

    laravel-avatar的服务提供者会处理必要的配置,而门面则提供了一个简洁的API,让你在代码中更方便地调用avatar生成函数。 一旦配置完成,你可以使用laravel-avatar提供的方法来生成头像。例如,如果你有一个用户...

    Avatar引擎 飞船模拟

    《Avatar引擎:飞船模拟技术深度解析》 在数字化娱乐领域,Avatar引擎因其强大的实时渲染能力和高度的可定制性,已经成为许多创新项目的核心技术之一。本文将深入探讨如何利用Avatar引擎进行飞船飞行模拟,并结合...

    图片AI合成人脸 Avatar Maker Pro - 3D avatar from a single selfie U3D

    图片AI合成人脸 Avatar Maker Pro - 3D avatar from a single selfie

    PyPI 官网下载 | django-avatar-4.0.1.tar.gz

    然后,根据项目需求配置`avatar`的相关设置,如头像的存储位置、默认头像等。在`settings.py`中添加以下配置: ```python AVATAR_DEFAULT_SIZE = (100, 100) # 默认头像尺寸 AVATAR_STORAGE_DIR = 'avatars' # 存储...

    Avatar Maker Free - 3D avatar from a single selfie(免费版)

    Avatar Maker,它是一个编辑器扩展插件,仅通过一张自拍照片即可生成3D头像。您可以直接从Unity Editor中使用现有照片或使用网络摄像头制作新照片,Avatar Maker会立即将其转换为可识别的3D化身。可以通过跟踪网络...

    Avatar引擎 拼图游戏

    《Avatar引擎 拼图游戏》是一款利用先进的Avatar引擎打造的3D拼图游戏,它为玩家提供了一种全新的、立体的拼图体验。这款游戏中,玩家可以接触到一系列精心设计的3D图像,通过解谜来完成不同难度级别的拼图挑战。 ...

    Laravel开发-avatar

    在本文中,我们将深入探讨如何在 Laravel 框架中开发一个 avatar 功能,这个功能可以将用户的名字、电子邮件或其他字符串转化为美观的、基于首字母的、带有阴影效果的头像。Laravel 是一个广受欢迎的 PHP 开发框架,...

    as3 Avatar系统(完整源码+demo)

    4. **数据存储**:Avatar的配置和状态需要存储,以便在不同的会话中保持一致。这可能涉及使用XML或JSON格式的数据文件。 5. **性能优化**:由于AS3是解释型语言,开发者需要关注代码效率,以确保大量Avatar操作时的...

    前端开源库-github-avatar-url

    4. **可配置性**:用户可能可以自定义头像大小、样式,甚至添加额外的查询参数,如设置头像的圆角半径。 5. **异步接口**:考虑到JavaScript的非阻塞特性,库可能提供了Promise或async/await的接口,方便在异步环境...

    个性AVATAR照片制作器

    【个性AVATAR照片制作器】是一款专为满足用户创造独特阿凡达形象需求而设计的软件。阿凡达,源自詹姆斯·卡梅隆的同名科幻电影,以其独特的外星生物设计吸引了全球观众的眼球。许多人对电影中的纳美人形象产生了浓厚...

    UMA - Unity Multipurpose Avatar

    UMA - Unity Multipurpose Avatar 可以自定义人物面容 由于assetstore网速较慢,先上传网盘,共享给大家.

    avatar头像截取

    在文件列表中,可以看到`.buildpath`和`.project`是Eclipse IDE的工作区配置文件,它们与实际的代码逻辑无关,但表明项目可能是使用Eclipse进行开发的。`application`和`system`可能代表了某种框架结构,比如...

    avatar_cover.jpg

    avatar_cover.jpg

    django-upload-avatar.zip

    django-upload-avatar 是一个 用于上传头像的可重用 app。方便网站开发中集成 用户上传头像的功能。可以用 pip install django-upload-avatar 安装 视频演示:   标签:django

    Avatar动画协调

    当我们变换动画时,Avatar人物的手和脚的位置会迅速的改变到新的位置上去。我们可以让这两个动作之间的改变协调。 这个示例使两个动作发生转换时要经过一段时间,一旦角色要使用一个新的动画时,会在当前动画经历一...

    Java获取Avatar头像工具类

    Java获取Avatar头像图片工具类。输入参数为Avatar注册邮箱地址,就能生成对应注册邮箱的Avatar头像链接。WordPress头像。

Global site tag (gtag.js) - Google Analytics