1. 程式人生 > >【Big Data】HADOOP叢集的配置(二)

【Big Data】HADOOP叢集的配置(二)

摘要: hadoop叢集配置系列文件,是筆者在實驗室真機環境實驗後整理而得。以便隨後工作所需,做以知識整理,另則與部落格園朋友分享實驗成果,因為筆者在學習初期,也遇到不少問題。但是網上一些文件大多互相抄襲,裡面錯誤百出。筆者結合自學書籍視訊等資料,完成這一套配置資料。實驗結果和過程經過反覆測試無誤後方整理出來的。配置過程中,初學者若有實驗環境,可以在真機環境下完成,若無條件,可補習下虛擬機器與Linux作業系統的基礎知識,以及裡面對linux常規命令使用,建議讀者邊配置學學習。(本文原創/整理,轉載請標註原文出處: Hadoop叢集的配置(二)

白寧超

2015年7月12日10:40:04

相關文章

2.8 節點之間的免密碼通訊

1.什麼是SSH

SSH是Secure Shell的縮寫,由IETF的網路工作小組(Network Working Group)所制定;SSH為建立在應用層和傳輸層基礎上的安全協議。SSH是目前較可靠,專為遠端登入會話和其他網路服務提供安全性的協議。利用SSH協議可以有效防止遠端管理過程中的資訊洩露問題。

從客戶端來看,SSH提供兩種級別的安全驗證。

第一種級別  基於口令的安全驗證

只要知道自己的帳號和口令,就可以登入到遠端主機。所有傳輸的資料都會被加密,但是不能保證你正在連線的伺服器就是你想連線的伺服器。可能會有別的伺服器在冒充真正的伺服器,也就是受到“中間人”這種方式的攻擊。

第二種級別  基於密匙的安全驗證

需要依靠密匙,也就是你必須為自己建立一對密匙,並把公用密匙放在需要訪問的伺服器上。如果你要連線到SSH伺服器上,客戶端軟體就會向伺服器發出請求,請求用你的密匙進行安全驗證。伺服器收到請求之後,先在該伺服器上你的主目錄下尋找你的公用密匙,然後把它和你傳送過來的公用密匙進行比較。如果兩個密匙一致,伺服器就用公用密匙加密“質詢”(challenge)並把它傳送給客戶端軟體。客戶端軟體收到“質詢”之後就可以用你的私人密匙解密再把它傳送給伺服器。

用這種方式,你必須知道自己密匙的口令。但是,與第一種級別相比,第二種級別不需要在網路上傳送口令。

第二種級別不僅加密所有傳送的資料,而且“中間人”這種攻擊方式也是不可能的(因為他沒有你的私人密匙)。但是整個登入的過程可能需要10秒。

2.虛擬機器拷貝節點

關閉當前CentOS,然後右擊CentOS,選擇“管理”-->“克隆”。

                       

分別完成CentOS1、CentOS2、CentOS3的克隆工作,然後分別啟動,重複2.2修改網路,用pietty登入,重複2.5的操作步驟更改相應主機名。

思考:node節點上的hosts和其他節點上的hosts一樣嗎?其中hosts檔案還不算大,手工改也不會耗費太多時間,如果搭建的是幾百個節點的叢集呢?

我們可以登入node節點,把node節點上的hosts遠端拷貝到其他節點。

使用scp命令: scp  fromAdd   toAdd  如圖

 

注意其中出現了和我們第一次連接出現的提示,The authenticity of host 'node1 (192.168.10.101)' can't be established.我們確認連線方安全輸入“yes”回車,輸入node1密碼連線成功,開啟known_hosts我們可以看到生成的金鑰:

 

以後再與node1不會再出現提示,因為在known_hosts已經加入了node1。但仍然需要輸入密碼,下面我們解決免密碼登入的問題,讀者先完成其他節點的hosts拷貝。

3.SSH免密碼登入

在各節點上生成各自SSH祕鑰對(命令中的rsa可以改成dsa,安全性更高),以node1為例。

 

在本機上生成authorized_keys,並驗證能否對本機進行SSH無密碼登陸。

 

所有節點都生成自己的authorized_keys之後,通過ssh-copy-id命令拷貝各自的公鑰到node2節點(可以隨機指定某個存在的節點),下面以node1節點為例,node1節點的公鑰複製到node2節點中並加入到授權的key中,並驗證是否配置成功。

 

以下是node2節點完成公鑰複製後的檔案。

 

由此可見所有節點都已經加入了[微軟使用者1] ,只要通過遠端拷貝那麼節點之間就可以實現免密碼登入了。

只要在node2節點上執行:

scp /root/.ssh/authorized_keys node:/root/.ssh/;scp /root/.ssh/authorized_keys node1:/root/.ssh/;scp /root/.ssh/authorized_keys node3:/root/.ssh/

 

這樣,就可以測試節點之間的登入了。

2.9 Hadoop啟動和測試

1.格式化檔案系統

在node節點上首先格式化namenode,執行命令hdfs  namenode  -format

在出現提示資訊的最後第二行出現“Exiting with status 0”表示格式化成功,在UNIX中0表示成功,1表示失敗,因此讀者如果返回“Exiting with status 1”應該好好分析下前面的錯誤提示資訊,一般來說是因為前面配置檔案和hosts檔案問題,修改後一定要同步到其他節點上,保持相同環境。

 

注意:有些讀者以前用hadoop1.2或者更靠前的版本,會習慣用hadoop namenode -format格式化,這個時候會彈出一條WARNING資訊,警告指令碼已過時,但不會影響結果,因為Hadoop2.2版本對之前的Hadoop命令幾乎都相容。

注意:格式化前可以先自定義叢集名字,如果未定義,系統將自動生成[微軟使用者2] 。

hadoop namenode -format -clusterid clustername

 2.啟動HDFS

使用start-dfs.sh開啟hadoop dfs服務。

 

通過上面可以看到,我們啟動了HDFS,node節點作為namenode,node1、node2、node3作為datanode,而node1也作為secondnamenode。

可以通過jps命令驗證。Jps也是Windows上面的命令,表示開啟的Java程序。當出現如下結果,表示驗證成功。

       

同樣,也可以通過網路驗證HDFSs情況,在Lunix環境下,在Web瀏覽器中輸入:http://node:50070,當然也可以在Windows環境中通過該URL訪問,只需修改如下檔案:

C:\Windows\System32\drivers\etc\hosts  新增192.168.10.100 node即可。

 

3.啟動YARN叢集

在主節點node[微軟使用者4] 上,執行命令:start-yarn.sh

 

通過輸出可以看到namenode已經作為了resourcemanager,而其他三個節點分別作為nodemanager。通過命令tail -f  /home/hadoop/hadoop2.2/logs/yarn-root-resourcemanager-node.out

可以檢視啟動日誌。

或者檢視啟動對應程序情況: jps

 

其他節點可以通過類似命令驗證,當然最方便的是輸入地址:http://node:8088/

 

NodeManager執行在從節點上,可以通過Web控制檯檢視對應節點的資源狀態,如節點s1:http://node1:8042/

 

4.管理JobHistory Server

啟動可以[微軟使用者5] JobHistory Server,能夠通過Web控制檯檢視叢集計算的任務的資訊,執行如下命令:       mr-jobhistory-daemon.sh start historyserver


終止JobHistory Server,執行如下命令:mr-jobhistory-daemon.sh stop historyserver

5.叢集驗證

可以使用Hadoop自帶的WordCount例子進行驗證。先在HDFS建立幾個資料目錄:

hadoop fs -mkdir -p /data/wordcount

hadoop fs -mkdir -p /output/

目錄/data/wordcount用來存放Hadoop自帶的WordCount例子的資料檔案,執行這個MapReduce任務的結果輸出到/output/wordcount目錄中。

將本地檔案上傳到HDFS中:

hadoop fs -put /home/hadoop/hadoop2.2/etc/hadoop/*.xml /data/wordcount/

可以檢視上傳後的檔案情況,執行如下命令:

hadoop fs -ls /data/wordcount

可以看到上傳到HDFS中的檔案。

下面,執行WordCount例子,執行如下命令:

hadoop  jar  /home/hadoop/hadoop2.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount  /data/wordcount  /output/wordcount

通過http://node:8088/可以看到節點的執行情況。

 

執行結束後可以通過如下命令檢視結果:

hadoop fs -cat /output/wordcount/part-r-00000 | head

以後我們掌握了相關api後可以自己編寫切詞統計程式。

6.需要了解的預設配置

在Hadoop 2.2.0中,YARN框架有很多預設的引數值,如果是在機器資源比較不足的情況下,需要修改這些預設值,來滿足一些任務需要。

NodeManager和ResourceManager都是在yarn-site.xml檔案中配置的,而執行MapReduce任務時,是在mapred-site.xml中進行配置的。

下面看一下相關的引數及其預設值情況:

3.動態管理節點(瞭解)

3.1動態增加和刪除datanode

總的來說,正確的做法是優先通過配置檔案,再在具體機器上進行相應程序的啟動/停止操作。

1. 配置檔案

  • 在namenode下修改配置檔案
  • 在hadoop 0.x中上述配置存放在檔案conf/hadoop-site.xml中;
  • 在hadoop 2.x中變化很大,檔案為conf/hdfs-site.xml中,引數名為:dfs.namenode.hosts和fs.namenode.hosts.exclude。

引數作用:

Names   a file that contains a list of hosts that are permitted to connect to the   namenode. The full pathname of the file must be specified. If the value is   empty, all hosts are permitted.

dfs.hosts.exclude:

Names a file that contains a list of hosts that are not permitted to connect to the namenode. The full pathname of the file must be specified. If the value is empty, no hosts are excluded

用法說明:

修改hdfs-site.xml,新增:

<property>

                   <name>dfs.hosts</name>

                   <value>/home/hadoop/hadoop2.2/conf/datanode-allow.list</value>

         </property>

         <property>

                   <name>dfs.hosts.exclude</name>

                   <value>/home/hadoop/hadoop2.2/conf/datanode-deny.list</value>

         </property>
  • 如果不需要允許列表,就不要建立對應項了。然後建立value所指定的檔案,一行寫一個主機名。
  • 在新slave上進行相關配置。
  • 在master上的slave列表加入該slave(非必須,方便以後重啟cluster用)
  • (若有)在datanode-allow.list中加入該slave
  • 在slave上啟動datanode程序:
  • 執行:hadoop-daemon.sh start datanode  

2. 新增

3. 刪除

極端不建議直接在slave上通過:hadoop-daemon.sh stop datanode 命令關掉datanode,這會導致HDFS中出現missing block,具體步驟如下:

  • 在master上修改datanode-deny.list,新增相應機器
  • 在master上重新整理節點配置情況:hadoop dfsadmin -refreshNodes  

此時在Web UI上就可以看到該節點變為Decommissioning狀態,過一會就變為Dead了。也可以通過:hadoop dfsadmin -report命令檢視。  namenode.stale.datanode.interval

  • 在slave上關閉datanode程序(非必須):  

執行: hadoop-daemon.sh stop datanode 

4. 重新加入各個刪除的節點

  • 在master的datanode-deny.list刪除相應機器
  • 在master上重新整理節點配置情況:hadoop dfsadmin -refreshNodes 
  • 在slave上重啟datanode程序:hadoop-daemon.sh start datanode 

注意:如果之前沒有關閉該slave上的datanode程序,需要先關閉再重新啟動。

3.2. 動態修改TaskTracker

1. 配置檔案

對於hadoop 2.x下[微軟使用者7] 在namenode下修改配置檔案conf/mapred-site.xml。關鍵引數mapred.hosts和mapred.hosts.exclude。

引數作用:和datanode的對應項一樣。

修改mapred-site.xml,新增引數:

        <property>

                   <name>mapreduce.jobtracker.hosts.filename</name>

                   <value>/home/hadoop/hadoop2.2/conf/datanode-allow.list</value>

         </property>

         <property>

                   <name>mapreduce.jobtracker.hosts.exclude.filename</name>

                   <value>/home/hadoop/hadoop2.2/conf/datanode-deny.list</value>

         </property>

然後建立value所指定的檔案。一行寫一個主機名。

2. 新增

  • 在新slave上進行相關配置。
  • 在master上的slave列表加入該slave(非必須,方便以後重啟cluster用)
  • 若有)[微軟使用者8] 在tasktracker-allow.list中加入該slave
  • 在slave上啟動tasktracker程序:
  • 執行:hadoop-daemon.sh start tasktracker  

注意:可以用jps命令檢視機器上的java程序的pid和程序名。

3. 刪除

不建議直接在slave上通過:hadoop-daemon.sh stop tasktracker命令關掉tasktracker,這會導致namenode認為這些機器暫時失聯,在一個超時時間內(預設10min+30s)依然假設它們是正常的還會將任務傳送給它們。

  • 在master上修改tasktracker-deny.list,新增相應機器
  • 在master上重新整理節點配置情況:hadoop mradmin -refreshNodes  

此時在Web UI上立即就可以看到Nodes的數量減少了,而Exclude Nodes的數量增加了。可以點進去具體檢視。

  • 在slave上關閉tasktracker程序(非必須):執行:hadoop-daemon.sh stop tasktracker  

4. 重新加入各個刪除的節點

  • 在master的tasktracker-deny.list刪除相應機器
  • 在master上重新整理節點配置情況:hadoop mradmin -refreshNodes  
  • 在slave上重啟tasktracker程序:hadoop-daemon.sh start tasktracker  

注意:如果之前沒有關閉該slave上的tasktracker程序,需要先關閉再重新啟動。

hadoop配置完

尾註:本系列文件,筆者真機環境測試無誤得以分享,純屬原創,若有轉載,請註釋出處.

相關推薦

Big DataHADOOP叢集配置

摘要: hadoop叢集配置系列文件,是筆者在實驗室真機環境實驗後整理而得。以便隨後工作所需,做以知識整理,另則與部落格園朋友分享實驗成果,因為筆者在學習初期,也遇到不少問題。但是網上一些文件大多互相抄襲,裡面錯誤百出。筆者結合自學書籍視訊等資料,完成這一套配置資料。實驗結果和過程經過反覆測試無誤後方

Big DataHADOOP叢集配置

摘要: hadoop叢集配置系列文件,是筆者在實驗室真機環境實驗後整理而得。以便隨後工作所需,做以知識整理,另則與部落格園朋友分享實驗成果,因為筆者在學習初期,也遇到不少問題。但是網上一些文件大多互相抄襲,裡面錯誤百出。筆者結合自學書籍視訊等資料,完成這一套配置資料。實驗結果和過程經過反覆測試無誤

pySpark教程Big Data, Hardware trends, and Spark

Big Data, Hardware trends, and Spark 在本系列課程中,我們會學習如下內容: Data Management Semi-Structed Data Structured Data 實驗二:使用 Spark 分析

筆記篇斜率優化dp SDOI2016征途

不能 最小化 征途 這樣的 string cpp mar logs -s =======傳=送=門======= 搜題目名會搜出很多奇怪的東西... 這個題目似乎有點毒? 比如在bzoj和loj上可以1A的代碼上會在luogu TLE 2個點, 在cogs TLE 10個

小說連載網絡紅顏:美女網絡工程師第一天上班就被燙傷了腳……

網絡 職場 美女 入職 簡介:這是一段描寫網絡工程師生活的故事。故事中沒有英雄,沒有勵誌,也沒有所謂的雞湯文化和狼性文化。有的,或許是一種對技術的執著,對愛情的渴望或者是對名利的一種追求,但又能追求到什麽呢?聲明:本故事所出現的人名,公司名均為虛構,如有雷同恰屬巧合小說將在本站博客和本人微信公

AI實戰快速掌握TensorFlow:計算圖、會話

在前面的文章中,我們已經完成了AI基礎環境的搭建(見文章:Ubuntu + Anaconda + TensorFlow + GPU + PyCharm搭建AI基礎環境),以及初步瞭解了TensorFlow的特點和基本操作(見文章:快速掌握TensorFlow(一)),接下來將繼續學習掌握Tenso

英語學習新概念英語單詞表

Lesson 1  private ['praivit] a.私人的  conversation [kɔnvə'seiʃən] n.談話  theatre  ['θiətə] n.劇場,戲院  seat [si:t] n.座位 play [plei] n.戲  lo

對話系統天氣對話機器人----- 關於Rasa踩過的那些坑

Rasa 是一個機器人對話開源框架,目前版本還在不斷迭代中。之前做的一個天氣對話機器人就是基於它的,這次我想來記錄一下用Rasa建立對話系統所遇到的坑。 1. 安裝  話說在Linux下rasa的安裝也不是啥難事,但是一定要注意選擇版本,由於其版本迭代過快,很

機器學習決策樹演算法— 程式碼實現

#coding=utf8 ‘’’ Created on 2018年11月4日 @author: xiaofengyang 決策樹演算法:ID3演算法 ‘’’ from sklearn.feature_extraction import DictVectorize

jsp/servletjsp資料互動

本章目標: 掌握application的原理及應用 掌握物件的作用域 掌握cookie的原理及應用 使用jsp訪問資料庫 1、application物件 類似於系統的“全域性變數”,用於同一個伺服器內的所有使用者之間的資料共享,對於整個web伺服器,a

Cloud FoundryCould Foundry學習——核心元件分析

在閱讀的過程中有任何問題,歡迎一起交流 QQ:1494713801 Cloud Foundry核心元件架構圖如下: 主要元件:     Cloud Controller:實質上是VMC和STS互動的伺服器端,它收到指令後發訊息到各模快,管理整個雲的執行,相當於Cl

Shell程式設計變數數值計算

OK,數值運算(上)是我看完的一小部分,大概的結束指令碼如下:(回顧~~) #!/bin/bash a=$1 b=$2 expr $1 + 1 &>/dev/null if [ "$

演算法題目遞迴題目求一個數組的子集

題目:求一個數組的子集 例子: 給出陣列 [a,b,c] 其子集就是 空、a、b、c、ab、ac、bc、abc 思路 這個問題實際上是一個遍歷樹的問題,進行遍歷每一個子元素,再進入下層函式時候記錄上層結果,加入到下層函式中,再儲存起來。由於ab和ba是

Spring系列——Spring Framework簡介

目錄 Core Container Core Container由spring-core,spring-beans,spring-context,spring-context-support,and spring-expression這些模組組成。

網路程式設計處理定時事件---利用訊號通知

前言 這篇的誕生也很不容易,感謝Jung Zhang學長和瑞神的橘子。 在上一篇,我們通過Redis對定時事件的處理有了一定的認識,今天我們繼續按照《高效能伺服器程式設計》上邊的思路,用C++來實現一個小demo。 本篇中,我們將利用alarm函式來完成定

Spring MVC深度探險SpringMVC——框架介紹

一、前言       從這篇部落格開始小編就正式向打擊介紹一下SpringMVC這個輕量級的框架,既然是輕量級自然就可以單獨使用了。也許你可能問為什麼要使用Spring MVC,Struts 2.x不

面向程式碼學習 Deep LearningDeep Belief Nets(DBNs)

========================================================================================== 最近一直在看Deep Learning,各類部落格、論文看得不少 但是說實話,這樣做有

深入Spring——Tiny Spring IoCBeanClass

  引言   上篇部落格講到的是Spring裡的基礎Bean,BeanDefinition與BeanFactory三者之間的簡單關係,這裡主要在此基礎 上新增BeanClass的內容,這裡順便提一個

IOS學習CoreText學習筆記設定文字屬性和插入圖片

設定文字和圖片的方法: 繪製文字的步驟是:設定NSAttributedString 或NSMutableAttributedString——> 通過attributedString 生成frameSetter ——> 生成CTFrame——>畫出來設定文字

2018最新iOS面試題

1.VC的生命週期 init:初始化程式 loadView:檢視初始化 viewDidLoad:檢視載入完成 viewWillAppear:檢視即將顯示 viewDidAppear:檢視顯示時呼叫 viewWillDisappear:檢視即將消失