apache hadoop 偽分散式安裝

来源:http://www.cnblogs.com/lanloveyan/archive/2017/08/24/7422870.html
-Advertisement-
Play Games

1. 準備工作 1.1. 軟體準備 1、安裝VMWare 2、在VMWare上安裝CentOS6.5 3、安裝XShell5,用來遠程登錄系統 4、通過rpm -qa | grep ssh 檢查cent os 是否安裝了ssh server和ssh client ,然後使用ssh localhost ...


1. 準備工作

1.1. 軟體準備

      1、安裝VMWare

      2、在VMWare上安裝CentOS6.5

      3、安裝XShell5,用來遠程登錄系統

      4、通過rpm -qa | grep ssh 檢查cent os 是否安裝了ssh server和ssh client ,然後使用ssh localhost測試一下SSH是否可用。

如果沒有安裝那麼使用下麵的命令安裝:

yum install openssh-clients  

yum install openssh-server  

yum install openssh-clients

yum install openssh-server

 

       5、使用XShell遠程登錄伺服器,接下來的操作就在XShell上通過命令行來執行了。虛擬機中的伺服器可以過ifconfig這個命令來獲取分配的ip地址(這個地址可能隨著虛擬機的重啟會發生變化)。

 

1.2. 創建hadoop用戶

    當前虛擬機中沒有安裝任何軟體,那麼我們的目的是搭建一個Hadoop單機模式,那麼首先需要在集群中建立一個hadoop用戶,用來啟動Hadoop的進程,這樣避免使用root用戶啟動進程,這也是比較規範的伺服器用戶管理,所以下麵先創建hadoop用戶:

 

useradd -m hadoop -s /bin/bash   
passwd hadoop    #為hadoop用戶設置密碼

useradd -m hadoop -s /bin/bash

passwd hadoop    #為hadoop用戶設置密碼

 

接下來的安裝過程中會涉及到root用戶和hadoop用戶的切換,請大家註意!!!

 

1.3. 配置SSH無密碼訪問

         在準備工作中我們已經安裝配置了SSH客戶端和伺服器,集群和單節點模式都需要到SSH,Hadoop中namenode需要啟動集群中的所有機器的Hadoop守護進程,而這個過程需要通過SSH登錄來實現。而Hadoop並沒有提供SSH輸入密碼的登錄形式,因此為了保證可以順利登錄每台機器,需要將所有機器配置為namenode可以無密碼登錄它們。實際中配置失敗也可以運行,但是每次輸入密碼是非常麻煩的,所以我們需要配置SSH的無密碼訪問(註意無密碼訪問是為hadoop用戶配置的,故以下操作需要在hadoop用戶下完成):

 

     1. 首先我們需要進入/home/hadoop/.ssh目錄下,如果這個目錄不存在,需要執行一下ssh localhost   這樣就會生成這個目錄。 

     2. 執行以下命令,創建密鑰並且將密鑰加入授權:

cd ~/.ssh/                       # 若沒有該目錄,請先執行一次ssh localhost  

ssh-keygen -t dsa                 # 會有提示,都按回車就可以  

cat id_dsa.pub >> authorized_keys   # 加入授權  

chmod 600 ./authorized_keys       # 修改文件許可權,如果不改,無法通過,原因好像是cent os的許可權驗證比較嚴格  

cd ~/.ssh/                       # 若沒有該目錄,請先執行一次ssh localhost

ssh-keygen -t dsa                 # 會有提示,都按回車就可以

cat id_dsa.pub >> authorized_keys   # 加入授權

chmod 600 ./authorized_keys       # 修改文件許可權,如果不改,無法通過,原因好像是cent os的許可權驗證比較嚴格

 

     3. 切換到hdoop用戶,接下來,輸入ssh localhost測試一下無密碼登錄,直接enter就可以,無需密碼

1.4. 安裝JAVA環境

   將jdk安裝包複製到/tmp目錄,然後解壓到/usr/java目錄中

  tar zxvf jdk-8u131-linux-x64.tar.gz -C /usr/java

  解壓完成後發現生成了jdk目錄

[root@cluster02 tmp]# cd /usr/java/

[root@cluster02 java]# ls

jdk1.8.0_131

[root@cluster02 java]#

修改/etc/profile配置java路徑

JAVA_HOME=/usr/java/jdk1.8.0_131

export JAVA_HOME

PATH=$JAVA_HOME/bin:$PATH

export PATH

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export CLASSPATH

2. 單機模式安裝

1) 通過xftp將本地hadoop安裝包和mds文件發送到伺服器/home/hadoop目錄下,然後驗證tar包的完整性;若文件不完整則這兩個值一般差別很大,可以簡單對比下前幾個字元跟後幾個字元是否相等即可,如下圖所示,如果兩個值不一樣,請務必重新下載。

<span style="font-size:18px;">cat hadoop-2.6.0.tar.gz.mds | grep 'MD5'  

md5sum hadoop-2.6.0.tar.gz | tr "a-z" "A-Z"</span>  

<span style="font-size:18px;">cat hadoop-2.6.0.tar.gz.mds | grep 'MD5'

md5sum hadoop-2.6.0.tar.gz | tr "a-z" "A-Z"</span>

Hadoop下載地址:

http://archive.apache.org/dist/hadoop/core/

 

2) 使用root賬號,進入/home/hadoop目錄下,解壓安裝文件到/usr/local/hadoop下

tar -zxvf hadoop-2.6.0.tar.gz -C /usr/local  

tar -zxvf hadoop-2.6.0.tar.gz -C /usr/local

 

3) 修改許可權

mv hadoop-2.6.0/ hadoop/   #更改文件夾名稱  

chown -R hadoop:hadoop ./hadoop   #修改許可權  

mv hadoop-2.6.0/ hadoop/   #更改文件夾名稱

chown -R hadoop:hadoop ./hadoop   #修改許可權

4) 驗證單機模式是否安裝成功,進入/usr/local/hadoop/bin目錄下,執行./hadoop -version

5) 執行一個小例子

Hadoop 預設模式為非分散式模式,無需進行其他配置即可運行。非分散式即單 Java 進程,方便進行調試。

現在我們可以執行例子來感受下 Hadoop 的運行。Hadoop 附帶了豐富的例子(運行./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar 可以看到所有例子),包括 wordcount、terasort、join、grep 等。

在此我們選擇運行 grep 例子,我們將 input 文件夾中的所有文件作為輸入,篩選當中符合正則表達式 dfs[a-z.]+ 的單詞並統計出現的次數,最後輸出結果到 output 文件夾中。

cd /usr/local/hadoop  

mkdir ./input  

cp ./etc/hadoop/*.xml ./input   # 將配置文件作為輸入文件  

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'  

cat ./output/*          # 查看運行結果  

cd /usr/local/hadoop

mkdir ./input

cp ./etc/hadoop/*.xml ./input   # 將配置文件作為輸入文件

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'

cat ./output/*          # 查看運行結果

 

6) 為了便於Hadoop的操作,我們在為hadoop用戶添加環境變數,讓用戶可以在任何地方執行hadoop命令,我們修改~/.bashrc文件配置,在最後添加以下命令,並且使生效(source ~/.bashrc):

export HADOOP_HOME=/usr/local/hadoop  

export HADOOP_INSTALL=$HADOOP_HOME  

export HADOOP_MAPRED_HOME=$HADOOP_HOME  

export HADOOP_COMMON_HOME=$HADOOP_HOME  

export HADOOP_HDFS_HOME=$HADOOP_HOME  

export YARN_HOME=$HADOOP_HOME  

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native  

export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin  

 

3. 偽分散式安裝

前提:已經安裝完成單機模式。

 

偽分散式只需要在單機模式的基礎上改兩個配置文件並且格式化namenode即可。

 

vim /usr/local/hadoop/etc/hadoop/core-site.xml

<property>  

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

    <value>file:/usr/local/hadoop/tmp</value>  

</property>  

<property>  

    <name>fs.defaultFS</name>  

    <value>hdfs://host1:9000</value>  

</property>  

Hdfs-site.xml

<property>  

        <name>dfs.replication</name>  

        <value>1</value>  

    </property>  

    <property>  

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

        <value>file:/usr/local/hadoop/tmp/dfs/name</value>  

    </property>  

    <property>  

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

        <value>file:/usr/local/hadoop/tmp/dfs/data</value>  

    </property>  

 

(偽分散式不啟動 YARN 也可以,一般不會影響程式執行)

有的讀者可能會疑惑,怎麼啟動 Hadoop 後,見不到書上所說的 JobTracker 和 TaskTracker,這是因為新版的 Hadoop 使用了新的 MapReduce 框架(MapReduce V2,也稱為 YARN,Yet Another Resource Negotiator)。

YARN 是從 MapReduce 中分離出來的,負責資源管理與任務調度。YARN 運行於 MapReduce 之上,提供了高可用性、高擴展性,YARN 的更多介紹在此不展開,有興趣的可查閱相關資料。

上述通過 ./sbin/start-dfs.sh 啟動 Hadoop,僅僅是啟動了 MapReduce 環境,我們可以啟動 YARN ,讓 YARN 來負責資源管理與任務調度。

首先修改配置文件 mapred-site.xml,這邊需要先進行重命名:

  1. mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml

然後再進行編輯,同樣使用 gedit 編輯會比較方便些 gedit ./etc/hadoop/mapred-site.xml :

  1. <configuration>
    <property>
     <name>mapred.job.tracker</name>
       <value>http://hadoop01:9001</value>
       </property>
            <property>
                 <name>mapreduce.framework.name</name>
                 <value>yarn</value>
           </property>

     

接著修改配置文件 yarn-site.xml

  1. <configuration>
            <property>
                 <name>yarn.nodemanager.aux-services</name>
                 <value>mapreduce_shuffle</value>
                </property>
    </configuration>

     

分別修改/usr/local/hadoop/etc/hadoop下的hadoop-env.sh和yarn-env.sh:

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.85.x86_64  

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native  

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib" 

 

格式化namenode:     

hdfs namenode -format 

成功的話,會看到 successfully formatted 的提示,且倒數第5行的提示如下,Exitting with status 0 表示成功,若為 Exitting with status 1 則是出錯。若出錯,請仔細檢查之前步驟。         

start-all.sh   #啟動hdfs  

start-all.sh   #啟動hdfs 

jps

必須看到namenode和datanode都啟動了才行!!!!

本地的偽分散式環境搭建完成!!!

http://hostname:8088/cluster

http://hostname:50070/

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • YARN也是主從架構,主節點是ResourceManager,從節點是NodeManager,是一種資源分配及任務管理的組件 針對每個任務還有ApplicationMaster應用管理者和Container資源的容器 . 當客戶端請求過來,首先向ResourceManager申請資源,Resourc ...
  • 在MySQL中,如何查看一個用戶被授予了那些許可權呢? 授予用戶的許可權可能分全局層級許可權、資料庫層級許可權、表層級別許可權、列層級別許可權、子程式層級許可權。具體分類如下: 全局層級 全局許可權適用於一個給定伺服器中的所有資料庫。這些許可權存儲在mysql.user表中。GRANT ALL ON *.*和REVO... ...
  • 本文屬於《InfluxDB系列教程》文章系列,該系列共包括以下 17 部分: InfluxDB學習之InfluxDB的基本概念 InfluxDB學習之InfluxDB的基本操作 InfluxDB學習之InfluxDB的HTTP API寫入操作 InfluxDB學習之InfluxDB數據保留策略(Re ...
  • 本文屬於《InfluxDB系列教程》文章系列,該系列共包括以下 17 部分: InfluxDB學習之InfluxDB的基本概念 InfluxDB學習之InfluxDB的基本操作 InfluxDB學習之InfluxDB的HTTP API寫入操作 InfluxDB學習之InfluxDB數據保留策略(Re ...
  • 在A表中存在一個欄位“name”,而且不同記錄之間的“name”值有可能會相同,現在就是需要查詢出在該表中的各記錄之間,“name”值存在重覆的項; Select Name,Count(*) From A Group By Name Having Count(*) > 1 查詢work_num中相同 ...
  • 存儲函數 定義 CREATE FUNCTION `fn_sum`(`a` int,`b` int) RETURNS int(11) BEGIN RETURN a + b; END 調用 Navicat工具中的調用 運行結果: Sql調用 SELECT fn_sum(1,2); 運行結果: Java中 ...
  • 要創建新帳戶時分配密碼,請使用 CREATE USER並包含 IDENTIFIED BY子句 要為現有帳戶分配或更改密碼,請使用以下方法之一: 1) 使用ALTER USER帶有IDENTIFIED BY子句的語句: 如果您沒有作為匿名用戶連接,您可以更改自己的密碼,而不必直接命名自己的帳戶: 2) ...
  • GREENPLUM總體結構: 資料庫由Master Severs和Segment Severs通過Interconnect互聯組成。 Master主機負責:建立與客戶端的連接和管理;SQL的解析並形成執行計劃;執行計劃向Segment的分發收集Segment的執行結果;Master不存儲業務數據,只 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...