Hadoop2.7.6完全分散式集群搭建

来源:https://www.cnblogs.com/frankdeng/archive/2018/05/16/9047698.html
-Advertisement-
Play Games

1 準備3台客戶機(關閉防火牆,設置靜態IP,主機名稱) 1.1 修改host文件 我們希望三個主機之間都能夠使用主機名稱的方式相互訪問而不是IP,我們需要在hosts中配置其他主機的host。因此我們在三個主機的/etc/hosts下均進行如下配置:1. 打開hosts文件 2. 配置主機host ...


1  準備3台客戶機(關閉防火牆,設置靜態IP,主機名稱)

1.1 修改host文件

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

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

2. 配置主機host

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.21 node21
192.168.100.22 node22
192.168.100.23 node23

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

[root@node21 ~]# scp /etc/hosts root@node22:/etc/hosts
[root@node21 ~]# scp /etc/hosts root@node23:/etc/hosts

4. 測試

[root@node21 ~]# ping node21
[root@node21 ~]# ping node22
[root@node21 ~]# ping node23

1.3  添加用戶賬號

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

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

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

[root@node21 ~]# visudo
添加   deng   ALL=(ALL)     ALL

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

[root@node21 root]$ su deng
[deng@node21 root]$ sudo 

1.3  配置yum源

yum install wget -y   #安裝wget  
mv /etc/yum.repos.d /etc/yum.repos.d.backup4comex   #備份當前的yum源
mkdir /etc/yum.repos.d  #新建空的yum源設置目錄
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo  #下載阿裡雲的yum源配置
yum clean all   #重建緩存
yum makecache  

2   安裝jdk1.8,配置環境變數

[deng@node21 ~]# rpm -qa|grep java   #查詢是否安裝java軟體:
[deng@node21 ~]# rpm -e –nodeps 軟體包   #如果安裝的版本低於1.7,卸載該jdk
[root@node21 opt]# mkdir module
[root@node21 opt]# mkdir tools
線上安裝   wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie"  http://download.oracle.com/otn/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz
這裡使用本地下載然後 xftp上傳到  /opt/tools/ 下 
[root@node21 tools]# tar zxvf  jdk-8u171-linux-x64.tar.gz  -C  /opt/module/
[root@node21 module]# mv jdk1.8.0_171 jdk1.8
設置JAVA_HOME  
vi /etc/profile
export  JAVA_HOME=/opt/module/jdk1.8
export  PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/sbin
source  /etc/profile
向其他節點複製jdk
[root@node21 ~]# scp -r /opt/module/jdk1.8 root@node22:`pwd`
[root@node21 ~]# scp -r /opt/module/jdk1.8 root@node23:`pwd`
配置各個主機下jdk的環境變數,由於我的電腦上linux都是新安裝的,環境變數相同,因此直接複製到了其他主機上。如果不同的主機的環境變數不同,請手動設置
[root@node21 ~]# scp /etc/profile root@node22:/etc/profile
[root@node21 ~]# scp /etc/profile root@node23:/etc/profile
 在每個主機上都重新編譯一下/etc/profile
[root@node21]# source /etc/profile
測試  java -version

 設置SSH免密碼登陸

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

[root@node21 ~]# su deng
[root@node21 ~]# ssh-keygen -t rsa
[root@node21 ~]# ssh-copy-id node21
[root@node21 ~]# ssh-copy-id node22
[root@node21 ~]# ssh-copy-id node23

node1與node2為namenode節點要相互免秘鑰   HDFS的HA

[root@node22 ~]# ssh-keygen -t rsa
[root@node22 ~]# ssh-copy-id node22
[root@node22 ~]# ssh-copy-id node21
[root@node22 ~]# ssh-copy-id node23

node2與node3為yarn節點要相互免秘鑰  YARN的HA

[root@node23 ~]# ssh-keygen -t rsa
[root@node23 ~]# ssh-copy-id node23
[root@node23 ~]# ssh-copy-id node21
[root@node23 ~]# ssh-copy-id node22 

4   安裝hadoop配置集群

4.1  安裝hadoop,配置環境變數

[root@node21 tools]# tar zxvf hadoop-2.7.6.tar.gz -C /opt/module/
vi /etc/profile
export  HADOOP_HOME=/opt/module/hadoop-2.7.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
編譯生效  . /etc/profile

4.2  hadoop集群部署規劃

           
node21 NameNode     DataNode   NodeManager
node22   SecondaryNameNode DataNode ResourceManager NodeManager
node23     DataNode   NodeManager

 

4.3  修改hadoop安裝包/etc/hadoop/下配置文件

4.3.1 修改core-site.xml

[root@node21 hadoop]$ vi core-site.xml

<!-- 指定HDFS中NameNode的地址 -->
	<property>
		<name>fs.defaultFS</name>
        <value>hdfs://node21:9000</value>
	</property>

	<!-- 指定hadoop運行時產生文件的存儲目錄 -->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/opt/module/hadoop-2.7.6/data/tmp</value>
	</property>

4.3.2 修改hdfs  包括hadoop-env.sh,hdfs-site.xml,slaves

[root@node21  hadoop]$ vi hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8

[root@node21  hadoop]$ vi hdfs-site.xml
<configuration>	
    <!-- 設置dfs副本數,不設置預設是3個   -->
	<property>
		<name>dfs.replication</name>
		<value>3</value>
	</property>
    <!-- 設置secondname的埠   -->
	<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node23:50090</value>
    </property>
</configuration>

[root@node21  hadoop]$ vi slaves
node21
node22
node23

4.3.3  修改Yarn  包括yarn-env.sh,yarn-site.xml

[root@node21 hadoop]$ vi yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8

[root@node21 hadoop]$ vi yarn-site.xml
<configuration>	
	<!-- reducer獲取數據的方式 -->
	<property>
		 <name>yarn.nodemanager.aux-services</name>
		 <value>mapreduce_shuffle</value>
	</property>
	<!-- 指定YARN的ResourceManager的地址 -->
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>node22</value>
	</property>
</configuration>	 

4.3.4  修改Mapreduce   包括mapred-env.sh,mapred-site.xml

[root@node21 hadoop]$ vi mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8

[root@node21 hadoop]$ vi mapred-site.xml
<configuration>	
<!-- 指定mr運行在yarn上 -->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>	  

4.3.5  在集群上分發hadoop安裝包文件(前面已配置hadoop環境變數)

[root@node21 module]# scp -r hadoop-2.7.6/ root@node22:`pwd`
[root@node21 module]# scp -r hadoop-2.7.6/ root@node23:`pwd`

5  啟動集群與測試

5.1 啟動集群

如果集群是第一次啟動,需要格式化namenode
[root@node21 hadoop-2.7.6]$ hdfs namenode -format

啟動HDFS:[root@node21 hadoop-2.7.6]$  start-dfs.sh
[root@node21 hadoop-2.7.6]$ jps
4166 NameNode
4482 Jps
4263 DataNode

[root@node22 hadoop-2.7.6]$ jps
3218 DataNode
3288 Jps

[root@node23 hadoop-2.7.6]$ jps
3221 DataNode
3283 SecondaryNameNode
3364 Jps

啟動YARN:註意:Namenode和ResourceManger如果不是同一臺機器,不能在NameNode上啟動 yarn,應該在ResouceManager所在的機器上啟動yarn。
[root@node22 hadoop-2.7.6]$  start-yarn.sh

5.2 集群基本測試

上傳文件 
[root@node21 hadoop-2.7.6]$ hadoop fs -mkdir -p /user/deng/input
[root@node21 hadoop-2.7.6]$ hadoop fs -put  wcinput/wc.input /user/root/input

下載文件
[root@node21 hadoop-2.7.6]$ hadoop fs -get /user/root/input/wc.input

5.3 Hadoop啟動停止方式

1)各個服務組件逐一啟動
分別啟動hdfs組件: hadoop-daemon.sh  start|stop  namenode|datanode|secondarynamenode
啟動yarn:yarn-daemon.sh  start|stop  resourcemanager|nodemanager

2)各個模塊分開啟動(配置ssh是前提)常用
start|stop-dfs.sh     start|stop-yarn.sh

3)全部啟動(不建議使用)
start|stop-all.sh

5.4 集群時間同步(略)

 


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

-Advertisement-
Play Games
更多相關文章
  • 開發環境涉及到協議棧SDK版本、keil PACK版本的匹配問題,目前測試通過的環境如下: windows系統:win10 硬體:NRF52832測試板、JLINK-V8模擬器 Keil uVision5 For ARM 5.14 nrfgostudio_win-64_1.21.2_installe ...
  • 一.更換ubuntu 16.04 更新源 1. 更新源 deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe deb http://mirrors.ustc.edu.cn/ubu ...
  • 1. spi調試問題: 問題描述: spi屏幕lk啟動的時候正常出現小企鵝,到kernel啟動的過程黑屏並且花屏才到開機動畫; 2. 黑屏的三個階段: 參照: "黑屏分析" 分析開機過程黑屏,首先需要定位黑屏問題發生的時間段,開機過程中涉及到顯示logo 或者是播放動畫的主要有如下三個階段: 顯示 ...
  • 1.啟動腳本start.sh 2.終止腳本stop.sh 或者查詢pid後終止 或 ...
  • Nginx("engine x")是一款是由俄羅斯的程式設計師Igor Sysoev所開發高性能的 Web和 反向代理 伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器。 在高連接併發的情況下,Nginx是Apache伺服器不錯的替代品。 Nginx 安裝 一、安裝編譯工具及庫文件 二、首 ...
  • 如何啟動/停止/重啟MySQL一、啟動方式1、使用 service 啟動:service mysqld start2、使用 mysqld 腳本啟動:/etc/inint.d/mysqld start3、使用 safe_mysqld 啟動:safe_mysqld& 二、停止1、使用 service 啟 ...
  • 本文主要介紹如何在CentOS7環境下集成Apache和SVN,完成後可以通過瀏覽器訪問SVN倉庫. 1.查看系統環境,關閉防火牆和SELinux. 2.安裝軟體包和Apache SVN模塊. 3. 驗證安裝結果. 4.驗證Apache SVN模塊是否安裝成功,需要檢查mod_dav_svn.so和 ...
  • 在做系統過程中,經常需要針對某些場景進行性能優化,那麼如何判定性能優化的效果呢?肯定需要知道優化之前Sql語句的耗時和優化之後Sql語句的耗時, 在SQL Server中,可以通過如下兩種方式來方便的知曉Sql語句執行的耗時以及IO消耗 1.使用T-Sql語句 2.使用工具的設置項 設置方法:工具- ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...