1. 程式人生 > >hadoop叢集搭建之偽分散式和完全分散式

hadoop叢集搭建之偽分散式和完全分散式

  • ## Hadoop叢集搭建

一、軟體及環境準備

安裝JDK
  • 查詢是否安裝jdk:
rpm -qa |grep java
  • 如果安裝版本小於1.7,解除安裝該版本
rpm -e 軟體包
  • 將上傳好的jdk解壓並配置環境變數
tar -zxf jdk-8u131-linux-x64.tar.gz -C /opt/module
vim /etc/profile    #新增環境變數
##JAVA_HOME##
export JAVA_HOME=/opt/module/jdk1.8.0
export PATH=$PATH:$JAVA_HOME/bin
source
/etc/profile ###重新整理環境變數 java -version #檢視java版本
安裝Hadoop
  • 解壓hadoop軟體
tar -zxf hadoop-2.9.0.tar.gz -C /opt/module
  • 新增環境變數
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.9.0
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin       
source /etc/profile         ###重新整理環境變數

二、執行Hadoop

偽分散式
  • 配置:core-site.xml (配置檔案位置在/opt/module/hadoop-2.9.0/etc/hadoop裡面)
<!-- 指定HDFS中NameNode的地址 -->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop101:9000</value>
</property>

<!-- 指定hadoop執行時產生檔案的儲存目錄 -->
<property>
    <name
>
hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.9.0/data/tmp</value> </property>
  • 配置:hdfs-site.xml
    <!-- 指定HDFS副本的數量 -->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
  • 配置:yarn-site.xml
<!-- reducer獲取資料的方式 -->
<property>
 <name>yarn.nodemanager.aux-services</name>
 <value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop101</value>
</property>
  • 配置:mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0  ###修改jdk位置
  • 配置: (對mapred-site.xml.template重新命名為) mapred-site.xml
<!-- 指定mr執行在yarn上 -->
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
啟動

格式化namenode(HDFS)(第一次格式化,在/opt/module/hadoop-2.9.0/下操作)

bin/hdfs namenode -format

啟動namenode(HDFS)

sbin/hadoop-daemon.sh start namenode    #啟動
sbin/hadoop-daemon.sh stop namenode     #停止

叢集操作(HDFS)

bin/hdfs dfs -mkdir -p /user/mapreduce/wordcount/input    ##建立資料夾
bin/hdfs dfs -put wcinput/wc.input  /user/mapreduce/wordcount/input/  ##上傳檔案
bin/hdfs dfs -ls  /user/mapreduce/wordcount/input/   ##檢視檔案 
bin/hdfs dfs -rm -R /user/atguigu/mapreduce/wordcount/output  ##刪除資料夾
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/mapreduce/wordcount/input  /user/mapreduce/wordcount/output   ##執行jar檔案程式

檢視資訊

[root@hadoop101 ~]# jps
13586 NameNode
13668 DataNode
13786 Jps

啟動resourcemanager(YARN)

sbin/yarn-daemon.sh start resourcemanager

啟動nodemanager(YARN)

sbin/yarn-daemon.sh start nodemanager

叢集操作(YARN)

http://192.168.1.101:8088/cluster
其他檔案配置

配置mapred-site.xml 歷史服務配置啟動檢視

<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop101:10020</value>
</property>
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop101:19888</value>
</property>
 ls sbin/ |grep mr      #檢視歷史伺服器目錄,此處為mr-jobhistory-daemon.sh
 sbin/mr-jobhistory-daemon.sh start historyserver   #啟動後 http://local:19888/jobhistory 檢視

配置yarn-site.xml 開啟日誌聚集功能

<!-- 日誌聚集功能使能 -->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<!-- 日誌保留時間設定7天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>
完全分散式

這裡寫圖片描述

設定ssh無密碼登入
ssh 192.168.1.103       #基本語法

生成公鑰、私鑰

cd ~/.ssh
ssh-keygen -t rsa

將生成的公鑰拷貝到要免密登入的主機上(自己也要)

ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104

.ssh資料夾下的檔案功能解釋

(1)~/.ssh/known_hosts  :記錄ssh訪問過計算機的公鑰(public key)
(2)id_rsa   :生成的私鑰
(3)id_rsa.pub   :生成的公鑰
(4)authorized_keys  :存放授權過得無祕登入伺服器公鑰
安裝遠端同步工具
1)檢視rsync使用說明
man rsync | more
(2)基本語法
rsync -rvl     $pdir/$fname         $user@hadoop$host:$pdir
命令 命令引數 要拷貝的檔案路徑/名稱   目的使用者@主機:目的路徑
選項
-r 遞迴
-v 顯示覆制過程
-l 拷貝符號連線
(3)案例實操
把本機/opt/tmp目錄同步到hadoop103伺服器的root使用者下的/opt/tmp目錄
rsync -rvl /opt/tmp/*  root@hadoop103:/opt/tmp

編寫叢集分發指令碼xsync (/usr/local/bin)

#!/bin/bash
#1 獲取輸入引數個數,如果沒有引數,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi

#2 獲取檔名稱
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 獲取上級目錄到絕對路徑
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 獲取當前使用者名稱稱
user=`whoami`

#5 迴圈
for((host=103; host<105; host++)); do
        #echo $pdir/$fname [email protected]$host:$pdir
        echo --------------- hadoop$host ----------------
        rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done
修改配置檔案

core-site.xml

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

    <!-- 指定hadoop執行時產生檔案的儲存目錄 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-2.9.0/data/tmp</value>
    </property>

hadoop-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0

hdfs-site.xml

<configuration> 
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>

    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:50090</value>
    </property>
</configuration>

slaves

hadoop102
hadoop103
hadoop104

yarn-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0

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>hadoop103</value>
    </property>
</configuration>

mapred-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0

mapred-site.xml

<configuration>
    <!-- 指定mr執行在yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

配置檔案分發,分發上面的配置檔案

cd /opt/module/hadoop-2.7.2/etc/hadoop
xsync /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml
xsync /opt/module/hadoop-2.7.2/etc/hadoop/yarn-site.xml
xsync /opt/module/hadoop-2.7.2/etc/hadoop/slaves
叢集啟動測試

hadoop102

bin/hdfs namenode -format       #格式化節點
sbin/start-dfs.sh               #啟動

hadoop103

sbin/start-yarn.sh              #啟動
配置時間同步伺服器
檢查ntp是否安裝
 rpm -qa|grep ntp
修改配置檔案
  • 修改ntp配置檔案
vi /etc/ntp.conf
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap     #修改內容
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 127.127.1.0
fudge 127.127.1.0 stratum 10        #新增內容
  • 修改/etc/sysconfig/ntpd 檔案
vim /etc/sysconfig/ntpd
SYNC_HWCLOCK=yes    #新增內容

重啟ntpd並設定開機自啟動和同步任務

service ntpd start
chkconfig ntpd on   #設定開機自啟動
 crontab -e         #設定同步任務
*/10 * * * * /usr/sbin/ntpdate hadoop102        #設定每10分鐘同步一次 hadoop102為時間伺服器

配置叢集常見問題

1)防火牆沒關閉、或者沒有啟動yarn
INFO client.RMProxy: Connecting to ResourceManager at hadoop108/192.168.10.108:8032
2)主機名稱配置錯誤
3)ip地址配置錯誤
4)ssh沒有配置好
5)root使用者和atguigu兩個使用者啟動叢集不統一
6)配置檔案修改不細心
7)未編譯原始碼
Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
17/05/22 15:38:58 INFO client.RMProxy: Connecting to ResourceManager at hadoop108/192.168.10.108:8032
8)datanode不被namenode識別問題
Namenode在format初始化的時候會形成兩個標識,blockPoolId和clusterId。新的datanode加入時,會獲取這兩個標識作為自己工作目錄中的標識。
一旦namenode重新format後,namenode的身份標識已變,而datanode如果依然持有原來的id,就不會被namenode識別。
解決辦法,刪除datanode節點中的資料後,再次重新格式化namenode。
9)不識別主機名稱
java.net.UnknownHostException: hadoop102: hadoop102
        at java.net.InetAddress.getLocalHost(InetAddress.java:1475)
        at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:146)
        at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1290)
        at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1287)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
解決辦法:
(1)在/etc/hosts檔案中新增192.168.1.102 hadoop102
    (2)主機名稱不要起hadoop  hadoop000等特殊名稱
10)datanode和namenode程序同時只能工作一個。
11)執行命令 不生效,貼上word中命令時,遇到-和長–沒區分開。導致命令失效
解決辦法:儘量不要貼上word中程式碼。
12)jps發現程序已經沒有,但是重新啟動叢集,提示程序已經開啟。原因是在linux的根目錄下/tmp目錄中存在啟動的程序臨時檔案,將叢集相關程序刪除掉,再重新啟動叢集。
13)jps不生效。
原因:全域性變數hadoop   java沒有生效,需要source /etc/profile檔案。
14)8088埠連線不上
[[email protected] 桌面]$ cat /etc/hosts
註釋掉如下程式碼
#127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1         hadoop102

相關推薦

hadoop叢集搭建分散式完全分散式

## Hadoop叢集搭建 一、軟體及環境準備 安裝JDK 查詢是否安裝jdk: rpm -qa |grep java 如果安裝版本小於1.7,解除安裝該版本 rpm -e 軟體包 將上傳好的jdk解壓並配置環境變數

Hbase分散式完全分散式搭建步驟

hbase偽分散式以Linux檔案系統 儲存 使用自身、自帶ZooKeeper 1、基本環境    ip、網路、hosts列表、防火牆關閉... 2、安裝jdk   設定jdk環境變數 3、下載安裝包

分散式完全分散式的3個配置檔案的配置

執行的通用操作都是格式化+啟動 hdfs namenode -format start-dfs.sh 完全分散式 在node01節點(即NameNode節點)配置hadoop 修改hdfs-site.xml配置檔案 <property>

Hadoop叢集搭建叢集環境部署說明+SSH

一、叢集軟體選擇及環境部署 1.叢集軟體選擇 2.單機情況下偽分散式模式下叢集主機和ip對映 叢集角色 主機名 使用者名稱 IP Master namenode hadoop Slave1

hadoop叢集環境搭建分散式叢集環境搭建

搭建叢集的模式有三種 1.偽分散式:在一臺伺服器上,啟動多個執行緒分別代表多個角色(因為角色在叢集中使用程序表現的) 2.完全分散式:在多臺伺服器上,每臺伺服器啟動不同角色的程序,多臺伺服器構成叢集 node01:NameNode node02:

Hadoop分散式完全分散式搭建測試(詳細版)

安裝 Hadoop 入門學習,快速搭建偽分散式環境。 注:需要下載的安裝包在文章底部,請自行獲取。 1. 修改主機名 vim /etc/hostname vim /etc/hosts reboot reboot 重啟主機使修改配置檔案生效,這裡我

hadoop學習第二天~Hadoop2.6.5完全分散式叢集搭建測試

環境配置: 系統 centos7 節點 192.168.1.111 namenode 192.168.1.115 datanode2 192.168.1.116 datanode3 java 環境 :

Hadoop筆記六——Hadoop2.x 完全分散式搭建

1、準備伺服器,並規劃伺服器角色     3臺 虛擬機器Linux     s-hadoop01.lele.com   4G 記憶體 40G (機子配置較差 1G) NameNode  ResourceManager   DataNode  NodeManager     

Hadoop簡單入門分散式搭建

前面兩章主要講解了完全分散式的搭建,這章主要講解伺服器單機完成偽分佈的搭建,介紹Hadoop配置,啟動,以及簡單測試。我的機器:阿里雲伺服器,64位,Java64,Hadoop2.4.1(64)  所有軟體下載百度雲 密碼:uup8 講在

ubuntu 虛擬機器 完全分散式 hadoop叢集搭建 hive搭建 ha搭建

針對分散式hadoop叢集搭建,已經在四臺虛擬機器上,完全搭建好,這裡針對整個搭建過程以及遇到的問題做個總結,按照下面的做法應該能夠比較順暢的搭建一套高可用的分散式hadoop叢集。 這一系列分散式元件的安裝過程中,大體可以分為以下幾步: 第一步.配置機器互信    機器互

Hadoop本地模式、分散式分散式叢集安裝與部署

<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/

Hadoop叢集搭建(詳細步驟)—完全分散式執行模式

分析: 1)準備3臺客戶機(關閉防火牆、靜態ip、主機名稱) 2)安裝jdk 3)配置環境變數 4)安裝hadoop 5)配置環境變數 6)配置叢集 7)單點啟動 8)配置ssh 9)群起並測試叢集 一、虛擬機器準備 詳見: 二、編寫叢集分

【異常】Hadoop分散式叢集搭建zookeeper故障

各節點中均已安裝配置好zookeeper。 在主節點中用遠端命令啟動個節點中的zookeeper。執行成功。 然而在檢視各節點的zookeeper狀態時,主節點報錯 Error contacting service. It is probably no

分散式系統詳解--框架(Hadoop-叢集搭建

                 分散式系統詳解--框架(Hadoop-叢集搭建)        前面的文章也簡單介紹了,hadoop的環境搭建分為三種,單機版,偽分

搭建真正的zookeeper叢集 搭建zookeeper分散式叢集

  搭建zookeeper偽分散式叢集 zookeeper是Hadop Ecosystem中非常重要的元件,它的主要功能是為分散式系統提供一致性協調服務, 提供的功能包括配置維護,域名服務,分散式同步和組服務。 zookeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的介面和效能高

hadoop叢集搭建3叢集啟動

前面叢集已經成功搭建,現在來嘗試啟動叢集。第一次系統啟動的時候,是需要初始化的 啟動zookeeper 1.啟動zookeeper的命令:./zkServer.sh start|stop|status [[email protected] ~]$3 zkServer.s

Hadoop叢集搭建(HDFSYarn叢集)

hadoop叢集搭建(HDFS和Yarn叢集) 1.安裝hadoop2.7.4 上傳hadoop的安裝包到伺服器 hadoop-2.7.4-with-centos-6.7.tar.gz 解壓安裝包 tar zxvf hadoop-2.7.4-wit

大資料面試題Hadoop叢集搭建步驟

一、開啟需要搭建Hadoop叢集的主從節點伺服器 ,配置好靜態IP、主機名hostname、主機IP對映檔案hosts、關掉防火牆二、通過遠端登入工具(我用的是SecureSRT) 登入到Linux系統,登入前需要在Windows系統中C:\Windows\System32\

Zookeeper 叢集搭建--單機分散式叢集

一. zk叢集,主從節點,心跳機制(選舉模式) 二、Zookeeper叢集搭建注意點 1、配置資料檔案 myid 1/2/3 對應 server.1/2/3 2、通過./zkCli.sh -server [ip]:[port] 檢測叢集是否配置成功 三、單機環境搭建叢集 1、拷貝另外兩個zk

hadoop-2.3.0-cdh5.1.0完全分散式搭建(基於centos)

注:本例使用root使用者搭建 一、環境 作業系統:CentOS 6.564位作業系統 注:Hadoop2.0以上採用的是jdk環境是1.7,Linux自帶的jdk解除安裝掉,重新安裝