hadoop 2.x安裝:完全分散式安裝

来源:https://www.cnblogs.com/frankdeng/archive/2018/04/25/8947402.html
-Advertisement-
Play Games

1. 安裝環境 本文使用三台CentOS6.4虛擬機模擬完全分散式環境。前五個過程和hadoop1.x安裝相同 1.1. 安裝環境 1.2. 集群環境 集群包含三個節點:1個namenode、2個datanode 在我們的測試機上,我們使用三台虛擬機來模擬linux。我們下文中稱之為tiny01、t ...


1. 安裝環境

本文使用三台CentOS6.4虛擬機模擬完全分散式環境。
前五個過程和hadoop1.x安裝相同

1.1. 安裝環境

項目參數
主操作系統   Windows 10 64 bit,8GB記憶體
虛擬軟體  VMware® Workstation 12 Pro 12.5.2
虛擬機操作系統 CentOS6.5 64位 512MB記憶體
虛擬機數量 3
jdk版本 java version "1.8.0_131"
安裝的hadoop版本 hadoop-2.7.4

1.2. 集群環境

集群包含三個節點:1個namenode、2個datanode

主機名稱主機IP節點類型hadoop賬號
tiny01 192.168.132.101 namenode grid
tiny02 192.168.132.102 datanode grid
tiny03 192.168.132.103 datanode grid

在我們的測試機上,我們使用三台虛擬機來模擬linux。我們下文中稱之為tiny01、tiny02、tiny03

2. 配置hosts文件

我們希望三個主機之間都能夠使用主機名稱的方式相互訪問而不是IP,我們需要在hosts中配置其他主機的host。因此我們在三個主機的/etc/hosts下均進行如下配置:
1. 打開hosts文件

[root@tiny01 ~]# vi /etc/hosts

2. 配置主機host

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.132.101 tiny01
192.168.132.102 tiny02
192.168.132.103 tiny03

3. 將配置發送到其他主機(同時在其他主機上配置)

[root@tiny01 ~]# scp /etc/hosts root@tiny02:/etc/hosts
[root@tiny01 ~]# scp /etc/hosts root@tiny03:/etc/hosts

4. 測試

[root@tiny01 ~]$ ping tiny01
[root@tiny01 ~]$ ping tiny02
[root@tiny01 ~]$ ping tiny03

3.建立hadoop運行賬號

我們在所有的主機下均建立一個grid賬號用來運行hadoop ,並將其添加至sudoers中
創建grid賬號的命令如下

[root@tiny01 ~]# useradd grid
[root@tiny01 ~]# # 通過手動輸入修改密碼
[root@tiny01 ~]# passwd --stdin grid
更改用戶 grid 的密碼 。
123456
passwd: 所有的身份驗證令牌已經成功更新。

添加grid組到sudo中,在其中添加下麵一行:

[root@tiny01 ~]# visudo
%grid   ALL=(ALL)       NOPASSWD:ALL

改行意思為,組:grid內的用戶允許免密碼使用sudo命令
測試:

[root@tiny01 ~]# su admin
[admin@tiny01 root]$ su grid
密碼:
[grid@tiny01 root]$

4. 設置SSH免密碼登陸

關於ssh免密碼的設置,要求每兩台主機之間設置免密碼,自己的主機與自己的主機之間也要求設置免密碼。 這項操作我們需要在hadoop用戶下執行。

[root@tiny01 ~]# su grid
[grid@tiny01 ~]# ssh-keygen -t rsa
[grid@tiny01 ~]# ssh-copy-id tiny01
[grid@tiny01 ~]# ssh-copy-id tiny02
[grid@tiny01 ~]# ssh-copy-id tiny03

我們在每一臺主機上執行如上命令。我們的設置結果如下,在每一臺主機grid用戶中的~/.ssh/authorized_keys文件中,其內容均為:


ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAs5s4u1SHzkeqHHMozFWyqFj/qKwn57Gm8tpvOxSRY+5xqdEonJGvQ71AF+EOvttz/qBgEGB3UX2jp7YVIcKcc9WDoJXrb2NuBKbnP0zywDCsVQj/4KC7rQzG7YF2x8xueuDrW8nSxmNF1cYfENtYKpIITtL3cwAaVBBgwZJFTj9QN8/cMorG5aclMCETeklpUhGkSZ5Ccjc0FfGNKhnQntPqPVMBbDaSrJ31T7eONlIRymBJufAengHWYFGkEm/mnktxeDxDpVgLSEhbvwRUOeQUZzGfRcpdWwGFyQNoPTfCYKPpaQsJT7tCB97VY6aAZiaNqoN0kLEvKVAYLyhaJQ== grid@tiny01

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAs0uMn5wpUJNqxi++3i2WQu9KSv7Mj2Za4yu/8pXGFDxIEJCNEgREnfSAdrmpftRjp083RV3842zp2fqpbcE335fma7VbIcSqq20cQhWFyB1dZFP+H+f4+RbC5g31Hk5YG+DDY5dEm2B3RLDpLt0FukJcc0smN56ZwQ3JUXxe9ip8slTvtMr2ptvSg86cy+Eu7Gwt+7XHCNYIrxCzv7YQ0WilzvEpHP09wRp/K15HFHh+mTimxN2z4QERNMg77hNYEdEVrOVIhMztgakuhhSkpbyskkQuTeiyvKTLd/QL4iSFjt7dB1nieVFWCRP2yY2AsjD8nbHarBrgYojS/kslCw== grid@tiny02

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAy4h+XIl/IR8/QxtCxW8xl8QOqqZQWlL+rsI2zlhgTb+6dN4B6CE+u3/SrU8c8tLJSAXuRTg+MohIABrKRpFuu8VCLHw27JZ21c9KXpncAe+wkv3vagbH1lfxyYnBGn5XY6MEhNTx7nyBL7O55GNA92kD+JIEGvVF+NUq8yBJDBqeVFoFPU6FARI3OJi1Hlh47+gjIAIp2SP8QEhvjm+katL4+KtGgyHMkw8OYYzW6t6wjzmqgIRdzkIZI0Q0ChC8wAl8wkhwYXnbdw6m4pgSnVJ0zBhQZ5ovCHF3FR0OsrXpoe/2tpjT4LG04khTpqt2T4PC36No3dhcd/9wAw4+4Q== grid@tiny03

5. 安裝jdk

此過程在root下進行

[grid@tiny01 ~]$
[grid@tiny01 ~]$ su root
密碼: 

5.1 下載並解壓jdk

我們需要先下載並解壓jdk,註意jdk的下載地址是經常變動的,因此請不要直接用下麵的地址下載,下載時請先查看一下地址。

1. 創建java的安裝路徑

[root@tiny01 grid]# mkdir /usr/java
[root@tiny01 grid]# cd /usr/java

2. 下載jdk
點擊Java SE Development Kit 8 Downloads,點擊同意後下載jdk-8u141-linux-x64.tar.gz(不同的版本也可以用相同的方式),複製下來下載鏈接
然後使用wget 下載鏈接的方式下載jdk

例如:

[root@tiny01 java]#  wget http://download.oracle.com/otn-pub/java/jdk/8u131-b13/e9e7ea248e2c4826b92b3f075a80e441/jdk-8u131-linux-x64.tar.gz?AuthParam=1488850152_387f1ee536313aeb1ffd212acd203c87

3. 解壓jdk解壓後刪除安裝包

[root@tiny01 java]# tar -xzvf jdk-8u131-linux-x64.tar.gz\?AuthParam\=1497245763_bb5c713b336123c5d38ef99896a12489
[root@tiny01 java]# rm -f jdk-8u131-linux-x64.tar.gz\?AuthParam\=1497245763_bb5c713b336123c5d38ef99896a12489

4. 查看jdk的地址

[root@tiny01 java]# cd jdk1.8.0_131/
[root@tiny01 jdk1.8.0_131]# pwd
/usr/java/jdk1.8.0_131

5.配置環境變數
/etc/profile文件中配置JAVA_HOME和PATH

[root@tiny01 jdk1.8.0_131]# vi /etc/profile

添加

export JAVA_HOME=/usr/java/jdk1.8.0_131
export PATH=$PATH:/usr/java/jdk1.8.0_131/bin

6.測試
運行java -version檢測配置是否成功

[root@tiny01 jdk1.8.0_131]# java -version
java version "1.8.0"
gij (GNU libgcj) version 4.4.7 20120313 (Red Hat 4.4.7-18)

Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

安裝成功

5.2 向其他節點複製jdk

[root@tiny01 ~]# ssh root@tiny02 "mkdir /usr/java"
[root@tiny01 ~]# ssh root@tiny03 "mkdir /usr/java"

[root@tiny01 ~]# scp -r /usr/java/jdk1.8.0_131 root@tiny02:/usr/java/jdk1.8.0_131 
[root@tiny01 ~]# scp -r /usr/java/jdk1.8.0_131 root@tiny03:/usr/java/jdk1.8.0_131

5.3 在各個主機下配置jdk的環境變數

編輯/etc/profile文件

[root@tiny01 ~]# vi /etc/profile

在該文件下添加如下內容

## JAVA_HOME 設置
export JAVA_HOME=/usr/java/jdk1.8.0_131
export PATH=$PATH:/usr/java/jdk1.8.0_131/bin

在每個主機下均進行設置,由於我的電腦上linux都是新安裝的,環境變數相同,因此直接複製到了其他主機上。如果不同的主機的環境變數不同,請手動設置

[root@tiny01 hadoop]# scp /etc/profile root@tiny02:/etc/profile
[root@tiny01 hadoop]# scp /etc/profile root@tiny03:/etc/profile

在每個主機上都重新編譯一下/etc/profile

[root@tiny01 hadoop]# source /etc/profile

5.4 測試

[root@tiny01 hadoop]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b13, mixed mode)

成功

(如果版本不對應,那麼說明linux本身已經有了預設的jdk,則需要修改linux預設jdk版本:修改linux預設jdk版本,由於我這裡安裝的是最小化安裝,所以沒有預設的jdk)

6. 下載並解壓hadoop

在linux控制臺下載hadoop並將其解壓

1.切換回grid用戶

[root@tiny01 jdk1.8.0_131]# su grid

2.創建hadoop目錄併進入到該目錄中

[grid@tiny01 ~]$ sudo mkdir /opt/hadoop
[grid@tiny01 ~]$ sudo chown grid:grid /opt/hadoop
[grid@tiny01 ~]$ cd /opt/hadoop
[grid@tiny01 hadoop]$ 

3.下載並解壓hadoop

[grid@tiny01 hadoop]$ wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.4/hadoop-2.7.4.tar.gz
[grid@tiny01 hadoop]$ tar -xzvf hadoop-2.7.4.tar.gz

7. 修改配置文件

hadoop2.x的配置文件和hadoop1.x的配置文件並不相同,因此我們有不同的設置方法。

以上個別文件預設不存在的,可以複製相應的template文件獲得。
我們不需要修改master了

註意:在hadoop2.x中配置文件是放在etc下的

7.1. 修改hadooop-env.sh

我們打開該文件:

vi hadoop-2.7.4/etc/hadoop/hadoop-env.sh

修改一下JAVA_HOME

# The java implementation to use.  Required.
export JAVA_HOME=/usr/java/jdk1.8.0_131

7.2 修改yarn-env.sh

打開該文件

 vi hadoop-2.7.4/etc/hadoop/yarn-env.sh

修改JAVA_HOME的路徑

# some Java parameters
export JAVA_HOME=/usr/java/jdk1.8.0_131
if [ "$JAVA_HOME" != "" ]; then
  #echo "run java in $JAVA_HOME"
  JAVA_HOME=$JAVA_HOME
fi

if [ "$JAVA_HOME" = "" ]; then
  echo "Error: JAVA_HOME is not set."
  exit 1
fi

7.3 修改slaves文件

打開該文件

vi hadoop-2.7.4/etc/hadoop/slaves

修改為以下內容

tiny02
tiny03

7.4 修改core-site.xml文件

打開該文件

vi hadoop-2.7.4/etc/hadoop/core-site.xml

修改為以下內容(註意主機名和文件路徑)

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://tiny01:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/hadoop/hadoop-2.7.4/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>hadoop.proxyuser.hduser.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hduser.groups</name>
<value>*</value>
</property>
</configuration>

7.5 修改hdfs-site.xml文件

打開該文件

vi hadoop-2.7.4/etc/hadoop/hdfs-site.xml

修改為以下內容(註意主機名和文件路徑)

<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>tiny01:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/hadoop/hadoop-2.7.4/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/hadoop/hadoop-2.7.4/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>

7.6 複製並修改mapred-site.xml文件

複製並打開該文件

cp hadoop-2.7.4/etc/hadoop/mapred-site.xml.template hadoop-2.7.4/etc/hadoop/mapred-site.xml
vi hadoop-2.7.4/etc/hadoop/mapred-site.xml

修改為以下內容(註意主機名)

<configuration>
<property>
<name>mapreduce.framework.name</name>
<
              
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 軟體官網:http://www.ezdml.com/ 作者郵箱:[email protected] EZDML EZDML是一個資料庫建表的軟體。 可快速的進行資料庫表結構設計,建立數據模型。 類似大家常用的資料庫建模工具如 PowerDesigner、ERWIN、ER-Studio 和 Rational- ...
  • 第一次寫博客,比較淺顯,歡迎大牛們指點一二,不勝感激。 ** 溫馨提示:如需轉載本文,請註明內容出處。** 本文連接:http://www.cnblogs.com/grom/p/8931650.html 最近在做爬蟲,之前一直在使用 HttpWebRequest 和 WebClient ,很方便快捷 ...
  • var httpFormData = filterContext.HttpContext.Request.Form; var logContent = string.Empty; //獲取url的 logContent = filterContext.HttpContext.Request.... ...
  • 1.創建 HttpCookies Cookie=new HttpCookies("CookieName");2.添加內容 Cookie.Values.Add("UserName","ABC"); Cookie["UserName"]="ABC";3.修改內容 Cookie.Values["UserN ...
  • Json反序列化有兩種方式【本人】,一種是生成實體的,方便處理大量數據,複雜度稍高,一種是用匿名類寫,方便讀取數據,較為簡單。 使用了Newtonsoft.Json,可以自行在nuget中導入 Json源數據: 第一種:是用匿名方法生成,按照Json的格式,從外到內,一步一步寫,非數組用new{}, ...
  • 1.安裝Active Directory 架構,下載:adminpak.msi安裝。 2.以管理員運行cmd,執行:regsvr32 schmmgmt.dll(該命令將在電腦上註冊“schmmgmt.dll”) 3.開始,運行輸入:mmc /a,然後單擊確認,打開MMC控制台 4.在MMC【文件】 ...
  • 系統:centos7 LNMP(centos7, nginx, mysql, python3) 雲服務:騰訊雲 1、python3安裝 如果選擇公共鏡像安裝的話,centos內置python2,是不會安裝python3的,因此需要我們自己安裝python3。 第一步: 下載最新的python3安裝包 ...
  • 轉自:https://blog.csdn.net/valage/article/details/73332147 圖片中可以看到掛載點“/”的利用率移到100%,空間不夠,所以要對其進行分區。 1. 先進入虛擬機設置里增大磁碟空間 註意:將25改成50,以擴大空間。這裡一定要寫比25大的數,因為他是 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...