hadoop集群搭建

来源:http://www.cnblogs.com/ZenoLiang/archive/2017/08/12/7348658.html
-Advertisement-
Play Games

第一步:搭建配置新的虛擬機 格式化之前先把tmp目錄下所有與Hadoop有關的信息全部刪除 rm -rf /tmp/hadoop-centos* 開啟之後jps只有Java的進程:sudo vi /etc/hosts 裡面加 bogon 1.sudo賦權 Root用戶 vi /etc/sudoers ...


第一步:搭建配置新的虛擬機

 

格式化之前先把tmp目錄下所有與Hadoop有關的信息全部刪除

rm -rf /tmp/hadoop-centos*

 

開啟之後jps只有Java的進程:sudo vi /etc/hosts 裡面加 bogon

1.sudo賦權

Root用戶 vi /etc/sudoers

/root  n(查找下一個結果)

centos  ALL=(ALL)     NOPASSWD:ALL

 

 

2.修改ens33網卡(橋接模式靜態IP)

創建軟鏈接

ln –s /etc/sysconfig/network-scripts/ifcfg-ens33 ens33

修改配置文件

vi /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet

BOOTPROTO=static

DEFROUTE=yes

PEERDNS=yes

PEERROUTES=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_PEERDNS=yes

IPV6_PEERROUTES=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens33

UUID=51248a5b-aece-4777-ab51-7b5e61602180

DEVICE=ens33

ONBOOT=yes

IPADDR=192.168.12.206

NETMASK=255.255.255.0

GATEWAY=192.168.12.1

DNA1=219.141.136.10

DNS2=202.106.196.115

DNS3=8.8.8.8

DNS4=114.114.114.114

 

改完後重啟network服務

    sudo systemctl restart network

虛擬機上右鍵-->設置-->網路適配器-->橋接模式

檢測是否連接網路 ping www.baidu.com

3.修改主機名

sudo  vi  /etc/hostname

原來內容全部刪除 寫入s126

重啟虛擬機

4.安裝JDK和Hadoop

1.上傳文件包

2.解壓        tar –zxvf ****

3.創建軟鏈接      ln –s *** hadoop

 

tar -zxvf jdk-8u121-linux-x64.tar.gz

ln -s jdk1.8.0_121 java

rm -rf jdk-8u121-linux-x64.tar.gz

 

tar -zxvf hadoop-2.8.0.tar.gz

ln -s hadoop-2.8.0 hadoop

rm -rf hadoop-2.8.0.tar.gz

 

4.配置環境變數

sudo vi /etc/profile

#java

JAVA_HOME=/home/centos/java

export PATH=$PATH:$JAVA_HOME/bin

 

#hadoop

HADOOP_HOME=/home/centos/hadoop

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

 

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

#java

export JAVA_HOME=/home/centos/java

 

5.刷新配置文件

source /etc/profile

5.關閉防火牆

sudo systemctl stop firewalld關閉防火牆

sudo systemctl start firewalld開啟防火牆

sudo systemctl disable firewalld禁用防火牆(開機不啟動)

sudo systemctl enable firewalld使用防火牆(開機啟動)

sudo systemctl status firewalld查看防火牆狀態

第二步:Hadoop集群搭建

1.獨立模式

1、 將hadoop的jar包上傳伺服器

2、 解壓tar包

tar –zxvf ****

3、 創建軟連接

ln –s *** hadoop

4、 配置環境變數

[vi /etc/profile]

最下麵加上

#hadoop

HADOOP_HOME=/home/centos/hadoop

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

最後保存文件載入環境變數配置文件

source /etc/profile

5、 修改hadoop環境變數配置文件配置jdk路徑

[$HADOOP_HOME/etc/hadoop/hadoop-env.sh]

 

6、 測試

hadoop version

 

預設hadoop就是獨立模式。

 

特點:運行任務是一個java進程,就相當於運行一個java程式

 

2.偽分散式模式配置

修改hdfs配置文件

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

        cd ~/hadoop/etc/hadoop

[core-site.xml]

<configuration>

        <property>

                <name>fs.defaultFS</name>

                <value>hdfs://192.168.12.126:9000</value>

        </property>

</configuration>

 

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

[hdfs-site.xml]

<configuration>

        <property>

                <name>dfs.replication</name>

                <value>1</value>

        </property>

</configuration>

 

設置ssh免密登錄

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys

 

檢測方式:ssh localhost/主機真實ip

 

格式化文件系統

hadoop namenode -format

 

啟動文件系統

jps                 檢測Java開啟的進程

start-dfs.sh        啟動文件系統(啟動了三個java進程)

jps                 再次檢測Java開啟的進程(應該是4個)

 

 

配置yarn資源管理器

cd ~/hadoop/etc/hadoop

 

cp  mapred-site.xml.template  mapred-site.xml

 

vi mapred-site.xml

     <configuration>

    <property>

        <name>mapreduce.framework.name</name>

        <value>yarn</value>

    </property>

</configuration>

 

vi yarn-site.xml

<configuration>

    <property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

    </property>

</configuration>

 

start-dfs.sh  &&  start-yarn.sh  &&  jps

3.完全分散式

配置/etc/hosts文件(本地靜態DNS)

首行加上 : bogon

增加:

192.168.12.201 s201

192.168.12.202 s202

192.168.12.203 s203

 

1.設置ssh免密登錄:

(現在別的主機ssh 主機IP 然後把宿主機複製過去的許可權600)

效果:從主機上能通過ssh免密登錄

目的:在主機上通過ssh執行命令

設置的方式:

                  首先給主機設置ssh免密登錄,將主機的公鑰(id_rsa.pub)通過scp命令發送到其他          主機,在其他主機上將獲取到的公鑰追加到~/.ssh/authorized_keys。

         主機:

ssh-keygen  –t  rsa  –P  ''  –f  ~/.ssh/id_rsa

cat  ~/.ssh/id_rsa.pub  >>  ~/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys

 

scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh/id_rsa.pub.s201

scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh/id_rsa.pub.s201

s202:

         s203:

                  cat ~/.ssh/id_rsa.pub.s201 >> ~/.ssh/authorized_keys

 

2.shell腳本的操作:

主機寫分發腳本cpTo,查看腳本xcall。賦予執行許可權。移動到/usr/local/bin目錄下,以便我們能在任何地方使用腳本

 

[cpTo]

#腳本的目的是:修改完了主機的文件以後,可以通過它分發到其他主機,實現同步

#腳本的用法:cpTo 文件(絕對路徑/相對路徑)

#!/bin/bash

#獲取參數的絕對路徑

dirname=`cd $(dirname $1); pwd`

basename=`basename $1`

echo ${dirname}/${basename}

for i in s202 s203

do

        echo "=================$i ${dirname}/${basename}=================="

                  #如果其他機器沒有父目錄創建父目錄

        ssh $i mkdir -p ${dirname}

                  #遠程拷貝文件

        scp  $1 ${i}:${dirname}/${basename}

done

 

[xcall.sh]

#作用是通過ssh遠程運行命令,比如查看jps,在比如刪除/tmp

#用法:xcall 命令

#!/bin/bash

for host in s201 s202 s203

do

        echo "====================echo $host $@==========================="

                  #ssh遠程執行命令

#$@獲取所有參數

#source /etc/profile 因為ssh遠程執行命令不去載入/etc/profile,所以很多命令沒法用

        ssh $host "source /etc/profile && $@"

Done

 

3.軟體安裝的操作

安裝jdk、hadoop、配置環境變數JAVA_HOME、HADOOP_HOME,可以通過xcall腳本來         同步安裝

在主機上修改hosts文件,給主機配置所有機器的dns服務,使用cpTo腳本分發到其他         機器,讓其他機器也有dns服務

註意:/etc/hosts是root用戶的文件,所以需要切換到root執行

dns服務: 可以將功能變數名稱解析為ip地址。比如ping s201,解析成ping 192.168.12.201

 

4.配置文件操作

在主機上修改hadoop的配置文件:

[Hadoop-en.sh]  [core-site.xml]  [hdfs-site.xml]  [mapred-site.xml]  [yarn-site.xml] [slaves]

通過cpTo腳本進行分發(可以分發上一級目錄來全部分發)

1、[hadoop-env.sh]配置javahome

2、[core-site.xml]配置連接url

[core-site.xml]

<configuration>

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://s201:9000</value>

    </property>

</configuration>

3、[hdfs-site.xml]配置的是副本數

<configuration>

    <property>

        <name>dfs.replication</name>

        <value>3</value>

    </property>

</configuration>

4、[mapred-site.xml]配置運行map任務採用的集群資源管理框架

<configuration>

    <property>

        <name>mapreduce.framework.name</name>

        <value>yarn</value>

    </property>

</configuration>

5、[yarn-site.xml]配置RM的節點和數據傳輸方式

<configuration>

         <property>

                  <name>yarn.resourcemanager.hostname</name>

              <value>s126</value>

    </property>

    <property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

    </property>

</configuration>

6、[slaves]配置datanode節點和NM節點

s201

s202

s203

 

5.主機格式化文件系統

只需要在主機格式化文件系統(xcall刪除數據目錄/tmp/hadoop*,日誌文件/logs/*)

啟動hdfs文件系統和yarn框架

xcall查看啟動是否成功/看web

 

第三步:配置項目

1、 將要統計的文件(wordcount.txt)上傳到hdfs

hdfs dfs –put 本地文件 hdfs目錄

hdfs dfs -put  wordCount2.txt /user

 

2、 運行任務

hadoop jar jar包 com.zdjy.bigdata.wordCount.hadoop.WordCountApp hdfs輸    入文件

hdfs輸出目錄

hadoop jar wordCount.jar com.zdjy.WordCountApp /user/wordCount2.txt /saa

 

3、 查看結果

hdfs dfs –cat hdfs輸出目錄下的文本文件 (hdfs dfs -cat /saa/*)

4.關閉文件系統

hdfs dfs -mkdir /user

hdfs dfs -ls -R /

hdfs -dfs -put wordCount2.txt /user

hdfs dfs -put  wordCount2.txt /user

hdfs dfs -ls -R /

hadoop jar wordCount-0.0.1-SNAPSHOT.jar

com.zdjy.bigdata.wordCount.hadoop.WordCountApp

/user/wordCount2.txt /out

hdfs dfs -cat /out/*

 

5.在瀏覽器上看web(sudo systemctl stop firewalld關閉防火牆)

http://192.168.12.206:50070

         文件系統:50070

         yarn:8088

ssh免密登錄與手動單獨啟動每一個進程

設置ssh免密登錄的原因:我們start-dfs.sh/start-yarn.sh他們都是通過ssh來遠程式控制制每一臺主機的進程的啟動

[start-dfs.sh]

if [ -n "$HADOOP_SECURE_DN_USER" ]; then

  echo \

    "Attempting to start secure cluster, skipping datanodes. " \

    "Run start-secure-dns.sh as root to complete startup."

else

  "$HADOOP_PREFIX/sbin/hadoop-daemons.sh" \

    --config "$HADOOP_CONF_DIR" \

    --script "$bin/hdfs" start datanode $dataStartOpt

fi

 

[Hadoop-daemons.sh]

exec "$bin/slaves.sh" --config $HADOOP_CONF_DIR cd "$HADOOP_PREFIX" \; "$bin/hadoop-daemon.sh" --config $HADOOP_CONF_DIR "$@"

 

[slaves.sh]

for slave in $SLAVE_NAMES ; do

 ssh $HADOOP_SSH_OPTS $slave $"${@// /\\ }" \

   2>&1 | sed "s/^/$slave: /" &

 if [ "$HADOOP_SLAVE_SLEEP" != "" ]; then

   sleep $HADOOP_SLAVE_SLEEP

 fi

done

 

我們手動啟動每一個進程

主機啟動namenode

         hadoop-daemon.sh start namenode

所有機器手動啟動datnode

         hadoop-daemon.sh start datanode

在主機上手動啟動datanode

         ssh s202 “source /etc/profile && hadoop-daemon.sh start datanode”

在主機上腳本啟動所有datanode

         hadoop-daemons.sh start datanode

在主機啟動secondarynamenode

 

主機啟動resourcemanager

         yarn-daemon.sh start resourcemanager

所有機器啟動nodemanager

         yarn-daemon.sh start nodemanager

在主機啟動所有的nodemanager

         yarn-daemons.sh start nodemanager

 

start-dfs.sh=NN,DNs,2NN

start-yarn.sh=RM,NMs

 

start-all.sh= start-dfs.sh && start-yarn.sh

 


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

-Advertisement-
Play Games
更多相關文章
  • 1 package cn.fraudmetrix.octopus.horai.biz.utils; 2 3 import org.springframework.util.StringUtils; 4 5 import java.util.regex.Matcher; 6 import java.u ...
  • 1 package cn.fraudmetrix.octopus.horai.biz.utils; 2 3 import java.security.MessageDigest; 4 import java.security.NoSuchAlgorithmException; 5 6 public ...
  • 1 package cn.fraudmetrix.octopus.horai.biz.utils; 2 3 import java.util.ArrayList; 4 import java.util.Arrays; 5 import java.util.Collections; 6 import ...
  • submit方式: 1 <form id="postForm" name="postForm" action="${rc.contextPath}/backdoor/uploadGroovy/upload" 2 enctype="multipart/form-data" method="post"> ...
  • 一、HashMap概述 二、HashMap的數據結構 三、HashMap源碼分析 1、關鍵屬性 2、構造方法 3、存儲數據 4、調整大小 5、數據讀取 6、HashMap的性能參數 7、Fail-Fast機制 ...
  • 報錯:'0.80454153 is not JSON serializable' 輸出y_pred_prob的類別:<type 'numpy.float32'> 參考https://stackoverflow.com/questions/27050108/convert-numpy-type-to- ...
  • cos是O'Rrilly公司開發的一款用於HTTP上傳文件的OpenSource組件 需要cos.jar,下載地址:http://www.servlets.com/cos/ cos上傳文件很簡單,比fileupload還簡單:但是上傳最大我試了試,是800多兆,超過直接崩潰: java.io.IOE ...
  • UVA - 1629 ans[t][b][l][r]表示t到b行,l到r列那一塊蛋糕切好的最小值d[t][b][l][r]表示t到b行,l到r列區域的櫻桃數,需要預處理 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...