高可用集群搭建

高可用集群搭建 

創建hadoop賬戶

  1. 創建hadoop賬戶(#注意,接下來的操作均在hadoop賬戶下運行

    # useradd hadoop
    # passwd hadoop
    su - hadoop
    mkdir soft disk1 disk2
    mkdir -p disk{1,2}/dfs/{dn,nn}
    mkdir -p disk{1,2}/nodemgr/local

    ?

  2. 將本地目錄下的hadoop-2.6.0-cdh5.5.0.tar.gz,上傳到虛擬機的/home/hadoop/soft目錄下,并且更改名字。
    1 tar -xzvf hadoop-2.6.0-cdh5.50
    2 mv hadoop-2.6.0-cdh5.50 hadoop
  3. 配置hadoop的環境變量
    1 vim ~/.bashrc
    2 export HADOOP_HOME=/home/hadoop/soft/hadoop
    3 export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
    4 source ~/.bashrc
  4. 進入/home/hadoop/soft/hadoop/etc/hadoop修改配置文件
    修改core-site.xml

    修改hdfs-site.xml

    修改mapred-site.xml

    修改yarn-site.xml

    修改環境變量(下面有文字版)

     增加hadoop環境變量
    vim ~/.bashrc

    ?

  5. 格式化namenode
    hdfs namenode -format
  6. 啟動start-all.sh啟動全部服務,或者可以分別啟動(start-dfs.sh,start-yarn.sh)/(hadoop-daemon.sh)


  7. 啟動之后可以通過jps查看當前開啟的服務以及netstat -tnlp查詢端口信息(或者可以在windows下通過登錄xxx:50070和xxx:8088查看)

?

高可用的搭建

  1. 將所有的服務全部關掉。

  2. 開啟zookeeper(配置安裝請參考zookeeper安裝)

  3. 在kslave5,kslave6,kslave7上執行
    cd
    mkdir disk1/dfs/jn
  4. 進入/home/hadoop/soft/hadoop/etc/hadoop修改配置文件

    修改core-site.xml
     1 <configuration>
     2     <property>
          <!-- 1.HDFS的訪問入口--> 3 <name>fs.defaultFS</name> 4 <value>hdfs://kcluster</value> 5 </property> 6 <property>
       <!-- 2.zookeeper集群地址--> 7 <name>ha.zookeeper.quorum</name> 8 <value>kslave5:2181,kslave6:2181,kslave7:2181</value> 9 </property> 10 </configuration>
    修改hdfs-site.xml
     1 <configuration>
     2 <property>
     3 <!-- 1.集群復制因子-->
     4 <name>dfs.replication</name>
     5 <value>7</value>
     6 </property>
     7 <property>
     8 <!-- 2.namenode數據存放地址,兩個地址是為了安全-->
     9 <name>dfs.namenode.name.dir</name>
    10 <value>file:///home/hadoop/disk1/dfs/nn,file:///home/hadoop/disk2/dfs/nn</value>
    11 </property>
    12 <property>
    13 <!-- 3.datanode是數據塊的存放地址,兩個地址是為了傳輸數據的速度 -->
    14 <name>dfs.datanode.data.dir</name>
    15 <value>file:///home/hadoop/disk1/dfs/dn,file:///home/hadoop/disk2/dfs/dn</value>
    16 </property>
    17 <property>
    18 <!-- 4.hdfs臨時文件存放目錄-->
    19 <name>dfs.tmp.dir</name>
    20 <value>/home/hadoop/disk1/tmp</value>
    21 </property>
    22 <property>
    23 <!-- 5.集群名字-->
    24 <name>dfs.nameservices</name>
    25 <value>kcluster</value>
    26 </property>
    27 <property>
    28 <!-- 6.namenode的列表成員別名-->
    29 <name>dfs.ha.namenodes.kcluster</name>
    30 <value>kma1,kma2</value>
    31 </property>
    32 <property>
    33 <!-- 7.namenode的主機通信地址-->
    34 <name>dfs.namenode.rpc-address.kcluster.kma1</name>
    35 <value>kmaster1:8020</value>
    36 </property>
    37 <property>
    38 <name>dfs.namenode.rpc-address.kcluster.kma2</name>
    39 <value>kmaster2:8020</value>
    40 </property>
    41 <property>
    42 <!-- 8.namenode的主機的http通信地址-->
    43 <name>dfs.namenode.http-address.kcluster.kma1</name>
    44 <value>kmaster1:50070</value>
    45 </property>
    46 <property>
    47 <name>dfs.namenode.http-address.kcluster.kma2</name>
    48 <value>kmaster2:50070</value>
    49 </property>
    50 <property>
    51 <!-- 9.JournalNodes主機列表-->
    52 <name>dfs.namenode.shared.edits.dir</name>
    53 <value>qjournal://kslave5:8485;kslave6:8485;kslave7:8485/kcluster</value>
    54 </property>
    55 <property>
    56 <!-- 10.JournalNodes保存日志和集群操作狀態的目錄-->
    57 <name>dfs.journalnode.edits.dir</name>
    58 <value>/home/hadoop/disk1/dfs/jn</value>
    59 </property>
    60 <property>
    61 <!-- 11.java 的類名,用來激活namenode-->
    62 <name>dfs.client.failover.proxy.provider.kcluster</name>
    63 <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    64 </property>
    65 <property>
    66 <!-- 12.Namenode和Zookeeper用來隔離失效節點的方式-->
    67 <name>dfs.ha.fencing.methods</name>
    68 <value>shell(/bin/true)</value>
    69 </property>
    70 <property>
    71 <!-- 13.是否激活namenode失效自動切換-->
    72 <name>dfs.ha.automatic-failover.enabled</name>
    73 <value>true</value>
    74 </property>
    75 </configuration>
    修改mapred-site.xml
     1 <configuration>
     2 <property>
     3 <!-- 1.分配 mapreduce 框架-->
     4 <name>mapreduce.framework.name</name>
     5 <value>yarn</value>
     6 </property>
     7 <property>
     8 <!-- 2.historyserver 地址-->
     9 <name>mapreduce.jobhistory.address</name>
    10 <value>kmaster1:10020</value>
    11 </property>
    12 <property>
    13 <!-- 3.historyserver Web端口-->
    14 <name>mapreduce.jobhistory.webapps.address</name>
    15 <value>kmaster1:19888</value>
    16 </property>
    17 <property>
    18 <!-- 4.yarn任務的臨時輸出目錄-->
    19 <name>yarn.app.mapreduce.am.staging-dir</name>
    20 <value>/user</value>
    21 </property>
    22 </configuration>
    修改yarn-site.xml
    <configuration>
    <property>
    <!-- 1.開始yarn的高可用-->
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
    </property>
    <property>
    <!-- 2.指定RM的cluster id-->
    <name>yarn.resourcemanager.cluster-id</name>
    <value>yarn-ha</value>
    </property>
    <property>
    <!-- 3.指定開啟高可用的RM別名-->
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>krm1,krm2</value>
    </property>
    <property>
    <!-- 4.分別指定RM的地址-->
    <name>yarn.resourcemanager.hostname.krm1</name>
    <value>kmaster1</value>
    </property>
    <property>
    <name>yarn.resourcemanager.hostname.krm2</name>
    <value>kmaster2</value>
    </property>
    <property>
    <name>yarn.resourcemanager.recovery.enabled</name>
    <value>true</value>
    </property>
    <property>
    <name>yarn.resourcemanager.store.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    </property>
    <property>
    <!-- 5.指定zookeeper的地址-->
    <name>yarn.resourcemanager.zk-address</name>
    <value>kslave5:2181,kslave6:2181,kslave7:2181</value>
    </property>
    <property>
    <!-- 6.為 mapreduce 分配 yarn 服務-->
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
    <property>
    <!-- 7.nodemanager 本機計算任務的臨時文件-->
    <name>yarn.nodemanager.local-dirs</name>
    <value>file:///home/hadoop/disk1/nodemgr/local,file:///home/hadoop/disk2/nodemgr/local</value>
    </property>
    <property>
    <!-- 8.nodemanager 日志輸出-->
    <name>yarn.nodemanager.log-dirs</name>
    <value>file:///home/hadoop/disk1/log/hadoop-yarn/containers</value>
    </property>
    <property>
    <!-- 9.遠程任務的輸出-->
    <name>yarn.nodemanager.remote-app-log-dir</name>
    <value>file:///home/hadoop/disk1/log/hadoop-yarn/apps</value>
    </property>
    <property>
    <!-- 10.日志匯集-->
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
    </property>
    </configuration>
    修改hadoop-env.sh(默認情況下HADOOP_PID_DIR指定位置是/tmp目錄,但是/tmp目錄每次重啟會做定時的更新,所以會不穩定,所以在完全分布式環境下需要進行修改
    1 export JAVA_HOME=/usr/java/default
    2 export HADOOP_PID_DIR=/home/hadoop/disk1/tmp
    修改mapred-env.sh

    1 export MAPRED_PID_DIR=/home/hadoop/disk1/tmp
    修改yarn-env.sh
    1 export YARN_PID_DIR=/home/hadoop/disk1/tmp

    ?

    配置hadoop環境變量(將接下來集群需要的zookeeper和hbase的環境變量都加好了)
     1 vim ~/.bashrc
     2 export HADOOP_HOME=/home/hadoop/soft/hadoop
     3 export HADOOP_PREFIX=$HADOOP_HOME
     4 export HADOOP_COMMON_HOME=$HADOOP_PREFIX
     5 export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop
     6 export HADOOP_HDFS_HOME=$HADOOP_PREFIX
     7 export HADOOP_MAPRED_HOME=$HADOOP_PREFIX
     8 export HADOOP_YARN_HOME=$HADOOP_PREFIX
     9 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    10 export ZOOKEEPER_HOME=/home/hadoop/soft/zk
    11 export PATH=$PATH:$ZOOKEEPER_HOME/bin
    12 export HBASE_HOME=/home/hadoop/soft/hbase
    13 export PATH=$PATH:$HBASE_HOME/bin
     
  5. 開啟journalnode(日志服務器)
    1 hadoop-daemon.sh start journalnode

    ?

  6. 初始化原來的namenode:
    1 # 初始化edits目錄
    2 hdfs namenode -initializeSharedEdits
    3 # 重新啟動namenode
    4 hadoop-daemon.sh start namenode
    5 # 查看namenode狀態
    6 hdfs haadmin -getServiceState kma1

    ?

  7. 初始化現在的namenode:
    1 hdfs namenode -bootstrapStandby
    2 # 啟動第二臺 namenode
    3hadoop-daemon.sh start namenode
    4 # 查看狀態
    5 hdfs haadmin -getServiceState kma2

    ?

  8. 格式化zookeeper控制器,選擇一臺namenode格式操作:
    1 hdfs zkfc -formatZK

    ?再次查看namenode狀態

    hdfs haadmin -getServiceState kma1

      active

    hdfs haadmin -getServiceState kma2

      standby

    ?查看到一個namenode(active),另一個namenode(standby)。接下來,開啟其余節點上的服務,均正常運行。至此,HA集群搭建完畢。



轉載于:https://www.cnblogs.com/Try-kevin/p/7868539.html

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

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

相關文章

scrt如何切換成英文版_英文版SecureCRT顯示亂碼解決

英文版SecureCRT顯示亂碼解決系統環境&#xff1a;CentOS&#xff15;.&#xff16;以前Linux都是默認安裝在英文環境下&#xff0c;用英文版的SecureCRT查看系統內容輸出的也都是英文的&#xff0c;不會出現亂碼問題。今天同事在服務器安裝時默認選擇了簡體中文&#xff0c;這…

java try catch_Java捕獲異常

大家好&#xff0c;歡迎來到樂字節小樂的Java技術分享園地在Java中&#xff0c;凡是可能拋出異常的語句&#xff0c;都可以用try ... catch捕獲。把可能發生異常的語句放在try { ... }中&#xff0c;然后使用catch捕獲對應的Exception及其子類。多catch語句可以使用多個catch語…

haproxy文件操作

import os #導入os模塊def search(): #定義查找函數 with open(haproxy.txt,r) as f: #只讀方式打開文件 value input(請輸入您…

多語言持久性:帶有MongoDB和Derby的EclipseLink

從現在開始&#xff0c;多語種持久性一直是新聞。 從2011年底開始&#xff0c;在著名的Fowler帖子的推動下&#xff0c;我看到了更多更好的主意。 最新的一個是公司內部的學生項目&#xff0c;我們在其中使用Scala作為后端數據&#xff0c;將數據持久存儲到MongoDB&#xff0c;…

web前端開發最佳實踐--(筆記之JavaScript最佳實踐)

如何避免全局變量污染&#xff1f; 避免定義全局變量或全局函數用一個變量進行封裝&#xff0c;并返回外部需要訪問的接口如何寫出高維護的js代碼 配置數據和代碼邏輯分離 如&#xff1a; 改成&#xff1a; ---用js模板mustachehandlebarsjsMVC的數據模式 model&#xff1a;數據…

yum mysql5.7位置_CentOS yum 安裝 Mysql5.7

1 Steps for a Fresh Installation of MySQL# wget https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm# yum localinstall mysql57-community-release-el6-9.noarch.rpm以上步驟其實是把 MySQL Yum repository 添加到了系統的 repository list 里去了。ll…

HTML/CSS基礎知識(四)

WEB標準和W3C的理解與認識 Web標準是一系列標準的集合。 網頁主要由三部分組成&#xff1a;結構&#xff08;Structure&#xff09;、表現&#xff08;Presentation&#xff09;和行為&#xff08;Behavior&#xff09;。 對應的標準也分三方面&#xff1a;結構化標準語言主要包…

python做一個系統代碼_python初學者,用python3實現基本的學生管理系統代碼實例...

這篇文章分享了管理系統&#xff0c;python學生管理系統的使用&#xff0c;這篇文章非常詳細地介紹了通過示例代碼實現的學生管理系統&#xff0c;該系統對每個人的研究或工作都有一定的參考學習價值。 這個是用python實現的基本的增刪改查的學生管理系統吧&#xff0c;其中主要…

Python入門筆記

Python變量和數據類型 數據類型 print語句 注釋 Python的注釋以 # 開頭&#xff0c;后面的文字直到行尾都算注釋 # 這一行全部都是注釋... print hello # 這也是注釋 什么是變量 定義字符串 字符串可以用或者""括起來表示。 如果字符串本身包含怎么辦&#xff1f;比如…

1058. 選擇題(20)

原題: https://www.patest.cn/contests/pat-b-practise/1058 思路: 本題主要就是怎么讀取數據的問題, 一定要注意scanf函數匹配到 空格或者回車會結束當前變量的賦值, 并且會丟棄這個空格或回車. 關于如何判斷一項答題是否正確, 可以采用循環一個一個判斷, 也可拼成 字符串用st…

使用Spring和Hibernate進行集成測試有多酷

我有罪&#xff0c;直到現在才寫集成測試&#xff08;至少針對數據庫相關事務&#xff09;。 因此&#xff0c;為了消除內感&#xff0c;我閱讀了如何在周末以最少的努力實現這一目標。 提供了一個小示例&#xff0c;描述了如何使用Spring和Hibernate輕松實現這一目標。 通過集…

假設mysql數據表t1有字段_使用ROMA Connect集成數據

概述ROMA Connect支持接入多種類型的數據源&#xff0c;并通過數據集成任務實現源端到目標端的數據集成轉換。ROMA Connect支持相同結構數據之間進行集成轉換&#xff0c;也支持異構數據之間進行集成轉換。本章節通過完成一個SQL Server到MySQL的數據集成配置樣例&#xff0c;幫…

vue-wechat-title

html中的title安裝&#xff1a;npm install vue-wechat-title --save1.在mian.js中//網頁titleimport VueTitle from vue-wechat-title Vue.use(VueTitle);2. 路由中加下 title { path: /, component: Index, meta: { title: 首頁 } }3. 在app.vue 中修改 router-view &a…

如何保證input的輸入值不會隨著提交 而變空_如何對web界面的應用進行測試?

一、輸入框&#xff1a;1、字符型輸入框&#xff1a;&#xff08;1&#xff09;字符型輸入框&#xff1a;英文全角、英文半角、數字、空或者空格、特殊字符“~&#xff01;#&#xffe5;%……&*&#xff1f;[]{}”特別要注意單引號和&符號。禁止直接輸入特殊字符時&…

CentOS6.x下,tomcat - web項目部署

1. 安裝tomcat tomcat安裝方法&#xff1a;http://www.cnblogs.com/vurtne-lu/p/6478440.html 2. 配置tomcat 修改server.xml文件 <!-- 使用 80 端口 (也可以使用其它端口)--> <Connector port"80" protocol"HTTP/1.1"connectionTimeout"200…

dedecms列表頁面隨機縮略圖調用

如果要利用dedecms制作扁平化主題&#xff0c;大概也能夠遇到相似的問題&#xff0c;那就是dedecms的縮略圖機制&#xff0c;在沒有縮略圖的情況下顯示單一的默認圖片&#xff0c;如果是wordpress可以很方便的定義函數調用隨機的縮略圖&#xff0c;即便是在沒有設置縮略圖并且文…

使用地圖觸發功能處理相干事件

本文介紹如何通過使用映射觸發器來處理一致性事件。 基本上&#xff0c;建議使用Oracle Coherence中的分布式數據管理來研究Oracle Coherence API的基本配置和實現。 映射觸發器是Oracle Coherence提供最高度定制的緩存管理系統的最重要功能之一。 MapTrigger代表一個功能代理…

阿里云服務器mysql莫名丟失_mysql數據庫丟失

mysql數據庫丟失云服務器(Elastic Compute Service&#xff0c;簡稱ECS)是阿里云提供的性能卓越、穩定可靠、彈性擴展的IaaS(Infrastructure as a Service)級別云計算服務。云服務器ECS免去了您采購IT硬件的前期準備&#xff0c;讓您像使用水、電、天然氣等公共資源一樣便捷、高…

01-HTML深入

1.1 瀏覽器的工作原理 把一些標簽解析成用戶可視化的頁面 1.2 HTML中的標簽與元素 在HTML中以<xx>開始&#xff0c;以</xx>結束&#xff0c;比如<html></html>等。 標簽和其內容統稱為元素&#xff0c;比如&#xff1a;<xx>h5</xx> 元素…

gitlab使用_使用 Docker 部署 Gitlab

GitLab 是一個用于倉庫管理系統的開源項目&#xff0c;使用Git作為代碼管理工具&#xff0c;并在此基礎上搭建起來的web服務&#xff0c;具有wiki和issue跟蹤功能。GitLab是當前應用非常廣泛的源代碼管理系統。1. 安裝docker引擎并啟動2. 獲取gitlab鏡像包查看下載好的鏡像3. 在…