hadoop1.0 高可靠性(HA)安装与总结
继上次安装完Kerberos安全认证后,现在我在这基础上,又给CDH加上了HA(high availability),也就是高可靠性,具体来讲就是双NameNode,双Jobtracker(我还是在MRv1模式下),有了HA后,这下集群的健壮性就能够得到很好的保证了。 我还是按照官方文档来操作
继上次安装完Kerberos安全认证后,现在我在这基础上,又给CDH加上了HA(high availability),也就是高可靠性,具体来讲就是双NameNode,双Jobtracker(我还是在MRv1模式下),有了HA后,这下集群的健壮性就能够得到很好的保证了。
我还是按照官方文档来操作的,有了上次的经验,建议大家在具体操作实施前,先快速阅读一遍,做到心中有数,我还阅读了Apache官方的说明,也不用怎么详细,大概知道怎么回事就行了。
首先说明一点的就是,CDH5 只支持Quorum Journal Manager(QJM)模式下的HA,不支持NFS模式的,这点和Apache官方的不一样,大家要留意下。
下面说说我遇到的坑:
- 按照software_config上面说的配置一步步来,如果要实现自动的Failover,需要安装zookeeper,安装也很简单,从http://archive.cloudera.com/cdh5/cdh/5/下载zookeeper-3.4.5-cdh5.0.2.tar.gz,然后按照zookeeper的安装说明安装即可,官方推荐zookeeper的集群数目为奇数,推荐值为3,我这样也配置了3台,zookeeper服务在在启动时会向集群内其他服务器发送认证数据,但是在第一次启动时难免有个先后顺序,所以先启动的节点向还没有启动的服务器发生数据时会报错,类型下面的错误信息
2014-07-17 14:49:06,151 [myid:1] - INFO [WorkerReceiver[myid=1]:FastLeaderElection@542] - Notification: 1 (n.leader), 0x100000106 (n.zxid), 0x1 (n.round), LOOKING (n.state), 1 (n.sid), 0x2 (n.peerEPoch), LOOKING (my state)2014-07-17 14:49:06,153 [myid:1] - WARN [WorkerSender[myid=1]:QuorumCnxManager@368] - Cannot open channel to 2 at election address node1/10.4.13.63:3888java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:579) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:354) at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:327) at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:393) at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:365) at java.lang.Thread.run(Thread.java:745)
这个是正常的,等3台全部启动后,有如下日志就证明没问题了
2014-07-17 11:26:44,425 [myid:3] - INFO [WorkerReceiver[myid=3]:FastLeaderElection@542] - Notification: 3 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 3 (n.sid), 0x0 (n.peerEPoch), LOOKING (my state)2014-07-17 11:26:44,426 [myid:3] - INFO [WorkerReceiver[myid=3]:FastLeaderElection@542] - Notification: 2 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 1 (n.sid), 0x0 (n.peerEPoch), LOOKING (my state)
- 在配置Securing access to ZooKeeper这步时,我也能得到像官方教程上说的
digest:hdfs-zkfcs:vlUvLnd8MlacsE80rDuu6ONESbM=:rwcda
与这个类似的信息,但是在执行zkfc -formatZK时,老是说的我得到的字符串(’->’ 后面的那部分)不对,我也不知道为什么,不知道是不是哪步少了什么,因为zookeeper集群在内网,集群内安全性一般不用考虑,我这里就直接忽略了这步,以后机会再找原因。
-
在配置Fencing Configuration时,我用了sshfence的方式,这里需要配置ssh的密钥,我直接把hdfs用户的密钥路径给上,后来在我验证双Namenode是否生效(通过kill掉active的NN,看看standby的NN能不能变为active的NN)发现不对,老是报错,连接不上另一个Namenode,后来发现需要用root的密钥,但是hdfs用户又不能读取root的密钥,所以我这里直接把root的.ssh文件下的文件全copy到hdfs用户的$HOME下,并设置为hdfs为其owner(我的root用户在集群内也是可以免密码登录的),这样就没问题了。
-
需要说明的是,在开启namenode之前,必须先开启journalnode,因为namenode开启时会去连接journalnode
-
然后就是开启双Namenode的步骤了,下面记录一些需要用到的命令
sudo -u hdfs bin/hdfs zkfc -formatZKsudo -u hdfs sbin/hadoop-daemon.sh start journalnode #开启journalnode进程sudo -u hdfs sbin/hadoop-daemon.sh start zkfc #开启automatic failover进程sudo -u hdfs bin/hdfs namenode -initializeSharedEdits #把一个non-HA的NameNode转为HA时用到sudo -u hdfs bin/hdfs namenode -bootstrapStandby sudo -u hdfs sbin/hadoop-daemon.sh start namenode#上面命这两个命令在运行第二个Namenode服务器上执行,必须先执行-bootstrapStandby 这行命令再开启namenode #下面这些命令之前,需要以hdfs用户用kinit拿到TGT,否则会报错sudo -u hdfs bin/hdfs haadmin -getServiceState nn1 #查看nn1是active的还是standby的
- 按照jobtracker的HA官方配置进行配置后,使用
sudo -u mapred sbin/hadoop-daemon.sh start jobtrackerha
命令开启jobtrackerha
- 通过
#运行下面这些命令之前,要先以mapred用户用kinit拿到TGT,否则会报错sudo -u mapred bin/hadoop mrhaadmin -getServiceState jt1
查看jt1是active的还是standby的
-
最后一个,还是关于HDFS的权限问题,因为mapreduce在执行任务时会向HDFS上写一些临时文件,如果权限不对,肯定就会报错了,不过这种错误也很好该,根据错误信息就能知道那个目录权限不对,然后改过来就行了,我这里进行下总结:
-
根据官方的教程配置教程,配置了如下选项:
<property> <name>mapred.job.tracker.persist.jobstatus.dir</name> <value>/jobtracker/jobsInfo</value></property>
所以需要在HDFS上创建相应目录,并修改其owner为mapred
- 其次是staging目录,如果没有配置,其默认值从默认配置可以看到mapreduce.jobtracker.staging.root.dir的值为${hadoop.tmp.dir}/mapred/staging,而${hadoop.tmp.dir}的值从这里可以看到值默认是/tmp/hadoop-${user.name},有因为我们使用mapred用户来执行tasktracker进行的,所以需要创建/tmp/hadoop-mapred/mapred/staging文件夹,并且其owner为mapred,权限为1777,可以用下面的命令来实现:
sudo -u hdfs bin/hdfs dfs -mkdir -p /tmp/hadoop-mapred/mapred/stagingsudo -u hdfs bin/hdfs dfs -chown mapred /tmp/hadoop-mapred/mapred/stagingsudo -u hdfs bin/hdfs dfs -chmod 1777 /tmp/hadoop-mapred/mapred/staging
此外,还需要配置mapreduce.jobtracker.system.dir指定的文件,默认为${hadoop.tmp.dir}/mapred/system,所以还需要执行下面的命令:
sudo -u hdfs bin/hdfs dfs -mkdir -p /tmp/hadoop-mapred/mapred/systemsudo -u hdfs bin/hdfs dfs -chown mapred /tmp/hadoop-mapred/mapred/system
这个目录只由mapred用户来写入,所以不用再修改其权限(的755即可)。
总结:这次配置HA的整个过程还是比较顺利的,除了烦人的各种权限问题,我觉得这也是我没有弄明白hadoop各个进程是如何工作导致的,通过支持配置HA,算是对job的运行又有了更深的的认识。
继上次安装完Kerberos安全认证后,现在我在这基础上,又给CDH加上了HA(high availability),也就是高可靠性,具体来讲就是双NameNode,双Jobtracker(我还是在MRv1模式下),有了HA后,这下集群的健壮性就能够得到很好的保证了。
我还是按照官方文档来操作的,有了上次的经验,建议大家在具体操作实施前,先快速阅读一遍,做到心中有数,我还阅读了Apache官方的说明,也不用怎么详细,大概知道怎么回事就行了。
原文地址:hadoop1.0 高可靠性(HA)安装与总结, 感谢原作者分享。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Win11系統無法安裝中文語言包的解決方法隨著Windows11系統的推出,許多用戶開始升級他們的作業系統以體驗新的功能和介面。然而,一些用戶在升級後發現他們無法安裝中文語言包,這給他們的使用體驗帶來了困擾。在本文中,我們將探討Win11系統無法安裝中文語言套件的原因,並提供一些解決方法,幫助使用者解決這個問題。原因分析首先,讓我們來分析一下Win11系統無法

您可能無法在OracleVirtualBox中將來賓新增安裝到虛擬機器。當我們點擊Devices>;InstallGuestAdditionsCDImage時,它只會拋出一個錯誤,如下所示:VirtualBox-錯誤:無法插入虛擬光碟C:將FilesOracleVirtualBoxVBoxGuestAdditions.iso編程到ubuntu機器中在這篇文章中,我們將了解當您無法在VirtualBox中安裝來賓新增元件時該怎麼辦。無法在VirtualBox中安裝來賓添加如果您無法在Virtua

如果你已經成功下載了百度網盤的安裝文件,但是無法正常安裝,可能是軟體文件的完整性發生了錯誤或者是殘留文件和註冊表項的問題,下面就讓本站來為用戶們來仔細的介紹一下百度網盤下載成功但是安裝不了問題解析吧。 百度網盤下載成功但是安裝不了問題解析 1、檢查安裝檔完整性:確保下載的安裝檔完整且沒有損壞。你可以重新下載一次,或者嘗試使用其他可信任的來源下載安裝檔。 2、關閉防毒軟體和防火牆:某些防毒軟體或防火牆程式可能會阻止安裝程式的正常運作。嘗試將防毒軟體和防火牆停用或退出,然後重新執行安裝

在Linux上安裝安卓應用程式一直是許多用戶所關心的問題,尤其是對於喜歡使用安卓應用程式的Linux用戶來說,掌握如何在Linux系統上安裝安卓應用程式是非常重要的。雖然在Linux系統上直接運行安卓應用程式並不像在Android平台上那麼簡單,但是透過使用模擬器或第三方工具,我們依然可以在Linux上愉快地享受安卓應用程式的樂趣。以下將為大家介紹在Linux系統上安裝安卓應

如果您使用過Docker,則必須了解守護程式、容器及其功能。守護程序是在容器已在任何系統中使用時在背景執行的服務。 Podman是一個免費的管理工具,用於管理和建立容器,而不依賴任何守護程序,例如Docker。因此,它在管理貨櫃方面具有優勢,而不需要長期的後台服務。此外,Podman不需要使用根級別的權限。本指南詳細討論如何在Ubuntu24上安裝Podman。更新系統我們先進行系統更新,開啟Ubuntu24的Terminalshell。在安裝和升級過程中,我們都需要使用命令列。一種簡單的

很多新手夥伴還不了解creo怎麼安裝,所以下面小編就帶來了creo安裝的相關教程,有需要的小伙伴趕緊來看一下吧,希望可以幫助大家。 1.打開下載好的安裝包,找到License資料夾,如下圖:2、然後把它複製到C盤的目錄裡面,如下圖所示:3、雙擊進入,看看有沒有許可文件,如下圖所示:4.接著把授權檔案複製到這個檔案中,如下圖所示:5、在C盤的PROGRAMFILES檔案中,新建一個PLC資料夾,如下圖所示:6、把授權檔案也複製一份進來,如下圖:7.雙擊主程式的安裝檔。進行安裝,勾選安裝新軟

在高中學習的時候,有些學生做的筆記非常清晰準確,比同一個班級的其他人都做得更多。對某些人來說,記筆記是一種愛好,而對其他人來說,當他們很容易忘記任何重要事情的小資訊時,則是一種必需品。 Microsoft的NTFS應用程式對於那些希望保存常規講座以外的重要筆記的學生特別有用。在這篇文章中,我們將描述Ubuntu24上的Ubuntu應用程式的安裝。更新Ubuntu系統在安裝Ubuntu安裝程式之前,在Ubuntu24上我們需要確保新設定的系統已經更新。我們可以使用Ubuntu系統中最著名的「a

在Win7系統下安裝Go語言是一項相對簡單的操作,只需按照以下步驟進行操作即可成功安裝。以下將詳細介紹在Win7系統下安裝Go語言的方法。第一步:下載Go語言安裝包首先,開啟Go語言官方網站(https://golang.org/),進入下載頁面。在下載頁面中,選擇與Win7系統相容的安裝套件版本進行下載。點擊下載按鈕,等待安裝包下載完成。第二步:安裝Go語言下
