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叢集搭建(HDFS和Yarn叢集)
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解除安裝掉,重新安裝