HadoopHA集群搭建


三臺主機:

192.168.143.111 ?hdp1

192.168.143.112 ?hdp2

192.168.143.113 ?hdp3


1、安裝配置ZooKeeper;

(1)在conf目錄下創建配置文件zoo.cfg

tickTime=2000

dataDir=.../zookeeper/data

dataLogDir=.../zookeeper/dataLog

clientPort=2181

initLimit=5

syncLimit=2

server.1=hdp1:2888:3888

server.2=hdp2:2888:3888

server.3=hdp3:2888:3888


(2)在ZooKeeper目錄下創建myid,hdp1的內容為1,hdp2的內容為2,hdp3的內容為3。


(3)分別啟動ZooKeeper:zkServer.sh start


2、修改hadoop配置文件;

hadoo-env.sh與mapred-site.xml的配置與非ha機制相同。

core-site.xml
<configuration>
? ? <!-- 指定hdfs的nameservice為ns1 -->
? ? <property>
? ? ? ? <name>fs.defaultFS</name>
? ? ? ? <value>hdfs://ns1/</value>
? ? </property>

? ? <!-- 指定hadoop臨時目錄 -->
? ? <property>
? ? ? ? <name>hadoop.tmp.dir</name>
? ? ? ? <value>/home/hadoop/app/hadoop-2.4.1/tmp</value>
? ? </property>

? ? <!-- 指定zookeeper地址 -->
? ? <property>
? ? ? ? <name>ha.zookeeper.quorum</name>
? ? ? ? <value>hdp1:2181,hdp2:2181,hdp3:2181</value>
? ? </property>
</configuration>


hdfs-site.xml
<configuration>
? ? <!--指定hdfs的nameservice為ns1,需要和core-site.xml中的保持一致 -->
? ? <property>
? ? ? ? <name>dfs.nameservices</name>
? ? ? ? <value>ns1</value>
? ? </property>


? ? <!-- ns1下面有兩個NameNode,分別是nn1,nn2 -->
? ? <property>
? ? ? ? <name>dfs.ha.namenodes.ns1</name>
? ? ? ? <value>nn1,nn2</value>
? ? </property>


? ? <!-- nn1的RPC通信地址 -->
? ? <property>
? ? ? ? <name>dfs.namenode.rpc-address.ns1.nn1</name>
? ? ? ? <value>hdp1:9000</value>
? ? </property>


? ? <!-- nn1的http通信地址 -->
? ? <property>
? ? ? ? <name>dfs.namenode.http-address.ns1.nn1</name>
? ? ? ? <value>hdp1:50070</value>
? ? </property>


? ? <!-- nn2的RPC通信地址 -->
? ? <property>
? ? ? ? <name>dfs.namenode.rpc-address.ns1.nn2</name>
? ? ? ? <value>hdp2:9000</value>
? ? </property>


? ? <!-- nn2的http通信地址 -->
? ? <property>
? ? ? ? <name>dfs.namenode.http-address.ns1.nn2</name>
? ? ? ? <value>hdp2:50070</value>
? ? </property>


? ? <!-- 指定NameNode的元數據在JournalNode上的存放位置,與ZooKeeper位置相同?-->
? ? <property>
? ? ? ? <name>dfs.namenode.shared.edits.dir</name>
? ? ? ? <value>qjournal://hdp1:8485;hdp2:8485;hdp3:8485/ns1</value>
? ? </property>


? ? <!-- 指定JournalNode在本地磁盤存放數據的位置 -->
? ? <property>
? ? ? ? <name>dfs.journalnode.edits.dir</name>
? ? ? ? <value>/home/hadoop/app/hadoop-2.4.1/journaldata</value>
? ? </property>


? ? <!-- 開啟NameNode失敗自動切換 -->
? ? <property>
? ? ? ? <name>dfs.ha.automatic-failover.enabled</name>
? ? ? ? <value>true</value>
? ? </property>


? ? <!-- 配置失敗自動切換實現方式 -->
? ? <property>
? ? ? ? <name>dfs.client.failover.proxy.provider.ns1</name>
? ? ? ? <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
? ? </property>


? ? <!-- 配置隔離機制方法,多個機制用換行分割,即每個機制暫用一行-->
? ? <property>
? ? ? ? <name>dfs.ha.fencing.methods</name>
? ? ? ? <value>
? ? ? ? ? ? sshfence
? ? ? ? ? ? shell(/bin/true)
? ? ? ? </value>
? ? </property>


? ? <!-- 使用sshfence隔離機制時需要ssh免登陸 -->
? ? <property>
? ? ? ? <name>dfs.ha.fencing.ssh.private-key-files</name>
? ? ? ? <value>/home/hadoop/.ssh/id_rsa</value>
? ? </property>


? ? <!-- 配置sshfence隔離機制超時時間 -->
? ? <property>
? ? ? ? <name>dfs.ha.fencing.ssh.connect-timeout</name>
? ? ? ? <value>30000</value>
? ? </property>
</configuration>


yarn-site.xml
<configuration>

? ? <!-- 開啟RM高可用 -->
? ? <property>
? ? ? ? <name>yarn.resourcemanager.ha.enabled</name>
? ? ? ? <value>true</value>
? ? </property>
? ??
? ? <!-- 指定RM的cluster id -->
? ? <property>
? ? ? ? <name>yarn.resourcemanager.cluster-id</name>
? ? ? ? <value>yrc</value>
? ? </property>
? ??
? ? <!-- 指定RM的名字 -->
? ? <property>
? ? ? ? <name>yarn.resourcemanager.ha.rm-ids</name>
? ? ? ? <value>rm1,rm2</value>
? ? </property>
? ??
? ? <!-- 分別指定RM的地址 -->
? ? <property>
? ? ? ? <name>yarn.resourcemanager.hostname.rm1</name>
? ? ? ? <value>hdp1</value>
? ? </property>
? ??
? ? <property>
? ? ? ? <name>yarn.resourcemanager.hostname.rm2</name>
? ? ? ? <value>hdp2</value>
? ? </property>
? ??
? ? <!-- 指定zk集群地址 -->
? ? <property>
? ? ? ? <name>yarn.resourcemanager.zk-address</name>
? ? ? ? <value>hdp1:2181,hdp2:2181,hdp3:2181</value>
? ? </property>
? ??
? ? <property>
? ? ? ? <name>yarn.nodemanager.aux-services</name>
? ? ? ? <value>mapreduce_shuffle</value>
? ? </property>
? ??
</configuration>


slaves

hdp3


3、初次啟動順序

先啟動ZooKeeper集群:zkServer.sh start

再啟動journalnode:hadoop-daemon.sh start journalnode

hdp1上格式化HDFS:hdfs namenode -format

啟動hdp1的NameNode:hadoop-daemon.sh start namenode

在hdp2上執行命令:hdfs namenode -bootstrapStandby

在hdp1上執行:hdfs zkfc -formatZK

在hdp1上執行:start-dfs.sh

在hdp1上執行:start-yarn.sh


4、平常啟動順序

先啟動ZooKeeper集群

在hdp1上執行:start-dfs.sh ? ?start-yarn.sh

在hdp2上執行:yarn-daemon.sh start resourcemanager


5、HA機制下hdfs的Java編程

public class HDFS_HA {public static void main(String[] args) throws Exception {Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://ns1");conf.set("dfs.nameservices", "ns1");conf.set("dfs.ha.namenodes.ns1", "nn1,nn2");conf.set("dfs.namenode.rpc-address.ns1.nn1", "hdp11:9000");conf.set("dfs.namenode.rpc-address.ns1.nn2", "hdp2:9000");//conf.setBoolean(name, value);conf.set("dfs.client.failover.proxy.provider.ns1", "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider");FileSystem fs = FileSystem.get(new URI("hdfs://ns1"), conf, "hadoop");InputStream in =new FileInputStream("c://eclipse.rar");OutputStream out = fs.create(new Path("/eclipse"));IOUtils.copyBytes(in, out, 4096, true);}
}



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387175.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387175.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387175.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

node搭建服務器,寫接口,調接口,跨域

剛開始學node&#xff0c;今天做這個也是累死寶寶了&#xff0c;以后可以自己寫接口自己用了&#xff0c;再也不用麻煩人家后臺人員了&#xff0c;這些年我們欠他們的太多了&#xff0c;說多了都是淚&#xff0c;不多說&#xff0c;往下看吧。。。 服務端項目目錄下&#xff1a…

ThreadPoolExcutor 線程池 異常處理 (上篇)

前言 最近看到crossoverJie的一篇文章&#xff1a;一個線程罷工的詭異事件 首先感謝原作者的分享&#xff0c;自己獲益匪淺。然后是回想到自己的一次面試經歷&#xff0c;面試官提問了線程池中的線程出現了異常該怎樣捕獲&#xff1f;會導致什么樣的問題&#xff1f; 示例代碼 …

3 MapReduce計算模型

MapReduce被廣泛應用于日志分析、海量數據排序、在海量數據中查找特定模式等場景中。 MapReduceJob 在Hadoop中&#xff0c;每個MapReduce任務都被初始化為一個Job。 每個Job又可以分為兩個階段&#xff1a;Map階段和Reduce階段。這兩個階段分別用Map函數和Reduce函數來表示。…

ionic3 調用本地相冊并上傳圖片

前言在APP中啟動相冊選擇器或者拍照上傳圖片這些功能是非常常見的。對于Ionic2&#xff0c;我們只能通過cordova插件實現調用原生的功能。下面將簡單的封裝一個選擇相冊或拍照上傳圖片的ImgService服務。具體如下。 Cordova準備下載安裝所需的Cordovar插件&#xff1a; Image P…

Mapreduce中maptask過程詳解

一、Maptask并行度與決定機制 1.一個job任務的map階段的并行度默認是由該任務的大小決定的&#xff1b; 2.一個split切分分配一個maprask來并行處理&#xff1b; 3.默認情況下&#xff0c;split切分的大小等于blocksize大小&#xff1b; 4.切片不是mapper類中對單詞的切片&…

4 開發MapReduce應用程序

系統參數配置 Configuration類由源來設置&#xff0c;每個源包含以XML形式出現的一系列屬性/值對。如&#xff1a; configuration-default.xml configuration-site.xml Configuration conf new Configuration(); conf.addResource("configuraition-default.xml"…

實用的HTML5的上傳圖片方法

<input type"file" accept"video/*;capturecamcorder"> <input type"file" accept"audio/*;capturemicrophone"><input type"file" accept"image/*;capturecamera">直接調用相機<input type…

3.11 列出完數

完數&#xff1a;一個數恰好等于不包括自身的所有不同因子之和。如6123。 輸入&#xff1a;每一行含有一個整數n。 輸出&#xff1a;對每個整數n&#xff0c;輸出所有不大于n的完數。輸出格式為&#xff1a;整數n&#xff0c;冒號&#xff0c;空格&#xff0c;完數&#xff0…

angularjs 上傳

xxx.module.ts模塊 import { NgModule} from “angular/core”; import { FileUploadModule } from “ng2-file-upload” ; import { XXXComponent } from “./xxx.component”; NgModule({ imports:[ FileUploadModule ], declarations:[ XXXComponent &#xff0c;/component…

PHPCMS的產品篩選功能

如下圖所示功能&#xff1a; 首先&#xff0c;用下面這些代碼替換掉phpcms/libs/functions/extention.func.php的內容 <?php /*** extention.func.php 用戶自定義函數庫** copyright (C) 2005-2010 PHPCMS* license http://www.phpcms.cn/licen…

框架使用SpringBoot + Spring Security Oauth2 +PostMan

框架使用SpringBoot Spring Security Oauth2 主要完成了客戶端授權 可以通過mysql數據庫讀取當前客戶端表信息進行驗證&#xff0c;token存儲在數據庫中 1.引入依賴 oauth2 依賴于spring security&#xff0c;需要引入spring&#xff0c; mysql&#xff0c;redis&#xff0c; …

3.12 12!配對

找出輸入數據中所有兩兩相乘的積為12!的個數。 輸入樣例&#xff1a; 1 10000 159667200 9696 38373635 1000000 479001600 3 1 479001600 輸出樣例&#xff1a; 3 有3對&#xff1a; 1 479001600 1 479001600 3 159667200 #include<iostream> #include<fstre…

程序員自身價值值這么多錢么?

xx 網絡公司人均獎金 28 個月…… xx 科技公司人均獎金 35 個月…… 每到年底&#xff0c;這樣的新聞在互聯網業內簡直是鋪天蓋地。那些獎金不高的程序員們一邊羨慕嫉妒&#xff0c;一邊暗暗比較一下自己的身價&#xff0c;考慮是不是該跳槽了。 不同水平的程序員&#xff0c;薪…

3.13 判讀是否是對稱素數

輸入&#xff1a;11 101 272 輸出&#xff1a; Yes Yes No #include<fstream> #include<iostream> #include<sstream> #include<string> #include<cmath> using namespace std;bool isPrime(int); bool isSymmetry(int);int main(){ifstream…

Spring MVC中使用 Swagger2 構建Restful API

0.Spring MVC配置文件中的配置[java] view plaincopy<!-- 設置使用注解的類所在的jar包&#xff0c;只加載controller類 --> <span style"white-space:pre"> </span><context:component-scan base-package"com.jay.plat.config.contro…

Go語言規范匯總

目錄 統一規范篇合理規劃目錄GOPATH設置import 規范代碼風格大小約定命名篇基本命令規范項目目錄名包名文件名常量變量變量申明變量命名慣例全局變量名局部變量名循環變量結構體(struct)接口名函數和方法名參數名返回值開發篇包魔鬼數字常量 & 枚舉結構體運算符函數參數返回…

3.14 01串排序

將01串首先按照長度排序&#xff0c;其次按1的個數的多少排序&#xff0c;最后按ASCII碼排序。 輸入樣例&#xff1a; 10011111 00001101 10110101 1 0 1100 輸出樣例&#xff1a; 0 1 1100 1010101 00001101 10011111 #include<fstream> #include<iost…

platform(win32) 錯誤

運行cnpm install后&#xff0c;出現雖然提示不適合Windows&#xff0c;但是問題好像是sass loader出問題的。所以只要執行下面命令即可&#xff1b;方案一&#xff1a;cnpm rebuild node-sass #不放心可以重新安裝下 cnpm install方案二&#xff1a;npm update npm install no…

Error: Program type already present: okhttp3.Authenticator$1

在app中的build.gradle中加入如下代碼&#xff0c; configurations {all*.exclude group: com.google.code.gsonall*.exclude group: com.squareup.okhttp3all*.exclude group: com.squareup.okioall*.exclude group: com.android.support,module:support-v13 } 如圖 轉載于:ht…

3.15 排列對稱串

篩選出對稱字符串&#xff0c;然后將其排序。 輸入樣例&#xff1a; 123321 123454321 123 321 sdfsdfd 121212 \\dd\\ 輸出樣例 123321 \\dd\\ 123454321 #include<fstream> #include<iostream> #include<string> #include<set> using …