hadoop+yarn+hbase+storm+kafka+spark+zookeeper)高可用集羣詳細配置

配置 hadoop+yarn+hbase+storm+kafka+spark+zookeeper 高可用集羣,同時安裝相關組建:JDK,MySQL,Hive,Flumehtml

 

 

環境介紹

節點介紹

  • 虛擬機數量:8 臺java

  • 操做系統版本:CentOS-7-x86_64-Minimal-1611.isonode

每臺虛擬機的配置以下:mysql

虛擬機名稱 CPU核心數 內存(G) 硬盤(G) 網卡
hadoop1 2 8 100 2
hadoop2 2 8 100 2
hadoop3 2 8 100 2
hadoop4 2 8 100 2
hadoop5 2 8 100 2
hadoop6 2 8 100 2
hadoop7 2 8 100 2
hadoop8 2 8 100 2

集羣介紹

8節點Hadoop+Yarn+Spark+Hbase+Kafka+Storm+ZooKeeper高可用集羣搭建:linux

集羣 虛擬機節點
HadoopHA集羣 hadoop1,hadoop2,hadoop3,hadoop4,hadoop5,hadoop6,hadoop7,hadoop8
YarnHA集羣 hadoop1,hadoop2,hadoop3,hadoop4,hadoop5,hadoop6,hadoop7,hadoop8
ZooKeeper集羣 hadoop3,hadoop4,hadoop5
Hbase集羣 hadoop3,hadoop4,hadoop5,hadoop6,hadoop7
Kafka集羣 hadoop6,hadoop7,hadoop8
Storm集羣 hadoop3,hadoop4,hadoop5,hadoop6,hadoop7
SparkHA集羣 hadooop1,hadoop2,hadoop3,hadoop4,hadoop5,hadoop6,hadoop7,hadoop8

集羣詳細規劃:git

虛擬機名稱 IP 安裝軟件 進程 功能
hadoop1 59.68.29.79 jdk,hadoop,mysql NameNode,ResourceManeger,DFSZKFailoverController(zkfc),master(spark) hadoop的NameNode節點,spark的master節點,yarn的ResourceManeger節點
hadoop2 10.230.203.11 jdk,hadoop,spark NameNode,ResourceManeger,DFSZKFailoverController(zkfc),worker(spark) hadoop(yarn)的容災節點,spark的容災節點
hadoop3 10.230.203.12 jdk,hadoop,zookeeper,hbase,storm,spark DataNode,NodeManager,journalnode,QuorumPeerMain(zk),HMaster,…(storm),worker(spark) storm,hbase,zookeeper的主節點
hadoop4 10.230.203.13 jdk,hadoop,zookeeper,hbase,storm,spark DataNode,NodeManager,journalnode,QuorumPeerMain(zk),HRegionServer,…(storm),worker(spark)  
hadoop5 10.230.203.14 jdk,hadoop,zookeeper,hbase,storm,spark DataNode,NodeManager,journalnode,QuorumPeerMain(zk),HRegionServer,…(storm),worker(spark)  
hadoop6 10.230.203.15 jdk,hadoop,hbase,storm,kafka,spark DataNode,NodeManager,journalnode,kafka,HRegionServer,…(storm),worker(spark) kafka的主節點
hadoop7 10.230.203.16 jdk,hadoop,hbase,storm,kafka,spark DataNode,NodeManager,journalnode,kafka,HRegionServer,…(storm),worker(spark)  
hadoop8 10.230.203.17 jdk,hadoop,kafka,spark DataNode,NodeManager,journalnode,kafka,worker(spark)  

軟件版本介紹

  • JDK版本: jdk-8u65-linux-x64.tar.gzweb

  • hadoop版本: hadoop-2.7.6.tar.gzsql

  • zookeeper版本: zookeeper-3.4.12.tar.gzshell

  • hbase版本: hbase-1.2.6-bin.tar.gz數據庫

  • Storm版本: apache-storm-1.1.3.tar.gz

  • kafka版本: kafka_2.11-2.0.0.tgz

  • MySQL版本: mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz

  • hive版本: apache-hive-2.3.3-bin.tar.gz

  • Flume版本: apache-flume-1.8.0-bin.tar.gz

  • Spark版本: spark-2.3.1-bin-hadoop2.7.tgz

前期準備

相關配置

每臺主機節點都進行相同設置

新建用戶 centos

千萬注意:不要在root權限下配置集羣

  • 新建 centos 用戶組
$> groupadd centos 
  • 1
  • 新建用戶 centos,並將該用戶添加到用戶組 centos
$> useradd centos -g centos 
  • 1
  • 爲 centos 用戶設置密碼
$> passwd centos 
  • 1
添加sudo權限
  • 切換到root用戶,修改 /etc/sudoers 文件
$> nano /etc/sudoers 添加以下語句: ## Allow root to run any commands anywhere root ALL=(ALL) ALL centos ALL=(ALL) ALL 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
更改用戶名
  • 進入 /etc/hostname 下,將原來的內容刪除,添加新的用戶名
$> sudo nano /etc/hostname 用戶名:hadoop1,hadoop2..... 
  • 1
  • 2
  • 3
主機名與IP映射
  • 進入 /etc/hosts,將原來的內容刪除,添加主機節點之間的相互映射
$> sudo nano /etc/hosts 添加內容以下: 127.0.0.1 localhost 59.68.29.79 hadoop1 10.230.203.11 hadoop2 10.230.203.12 hadoop3 10.230.203.13 hadoop4 10.230.203.14 hadoop5 10.230.203.15 hadoop6 10.230.203.16 hadoop7 10.230.203.17 hadoop8 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
顯示當前文件的絕對路徑

命令:pwd。形如 ~ 轉換爲 /home/centos。方便肯定當前文件的路徑

  • 進入 /etc/profile 中進行配置
[centos@hadoop1 ~]$ sudo nano /etc/profile 在末尾添加: export PS1='[\u@\h `pwd`]\$' // source /etc/profile 立刻生效 [centos@hadoop1 /home/centos]$ 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

ssh免密登陸

hadoop1 和 hadoop2 是容災節點(解決單點故障問題),因此這兩個主機除了能互相訪問以外,還須要登陸其餘主機節點,能夠免密登陸

  • 檢查是否安裝了ssh相關軟件包(openssh-server + openssh-clients + openssh)
[centos@hadoop1 /home/centos]$ yum list installed | grep ssh 
  • 1
  • 檢查是否啓動了sshd進程
[centos@hadoop1 /home/centos]$ ps -Af | grep sshd 
  • 1
  • 在hadoop1~hadoop8主機節點的 ~(/home/centos) 目錄下建立 .ssh 文件目錄,並修改權限
[centos@hadoop1 /home/centos]$ mkdir .ssh [centos@hadoop1 /home/centos]$ chmod 700 ~/.ssh 
  • 1
  • 2
  • 在hadoop1主機上生成祕鑰對,追加公鑰到~/.ssh/authorized_keys文件中,並修改authorized_keys文件的權限爲644(centos系統)
//生成祕鑰對 [centos@hadoop1 /home/centos]$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa //進入 ~/.ssh 文件夾下 [centos@hadoop1 /home/centos]$ cd ~/.ssh //追加公鑰到~/.ssh/authorized_keys文件中 [centos@hadoop1 /home/centos/.ssh]$ cat id_rsa.pub >> authorized_keys // 修改authorized_keys文件的權限爲644 [centos@hadoop1 /home/centos/.ssh]$ chmod 644 authorized_keys 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 將hadoop1的公鑰文件id_rsa.pub遠程複製給其餘7臺主機節點,並放置在/home/centos/.ssh/authorized_keys下
//重名名 [centos@hadoop2 /home/centos/.ssh]$ mv id_rsa.pub id_rsa_hadoop1.pub [centos@hadoop1 /home/centos/.ssh]$ scp id_rsa_hadoop1.pub centos@hadoop2:/home/centos/.ssh/authorized_keys [centos@hadoop1 /home/centos/.ssh]$ scp id_rsa_hadoop1.pub centos@hadoop3:/home/centos/.ssh/authorized_keys [centos@hadoop1 /home/centos/.ssh]$ scp id_rsa_hadoop1.pub centos@hadoop4:/home/centos/.ssh/authorized_keys [centos@hadoop1 /home/centos/.ssh]$ scp id_rsa_hadoop1.pub centos@hadoop5:/home/centos/.ssh/authorized_keys [centos@hadoop1 /home/centos/.ssh]$ scp id_rsa_hadoop1.pub centos@hadoop6:/home/centos/.ssh/authorized_keys [centos@hadoop1 /home/centos/.ssh]$ scp id_rsa_hadoop1.pub centos@hadoop7:/home/centos/.ssh/authorized_keys [centos@hadoop1 /home/centos/.ssh]$ scp id_rsa_hadoop1.pub centos@hadoop8:/home/centos/.ssh/authorized_keys 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 在hadoop2主機上生成祕鑰對。爲了與hadoop1的公鑰區分,重命名爲 id_rsa_hadoop2.pub。追加公鑰到~/.ssh/authorized_keys文件中,並分發給其餘7臺主機節點
//生成祕鑰對 [centos@hadoop2 /home/centos]$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa //重名名 [centos@hadoop2 /home/centos/.ssh]$ mv id_rsa.pub id_rsa_hadoop2.pub //追加公鑰到~/.ssh/authorized_keys文件中 [centos@hadoop1 /home/centos/.ssh]$ cat id_rsa_hadoop2.pub >> authorized_keys //將authorized_keys分發給其餘節點 [centos@hadoop1 /home/centos/.ssh]$ scp authorized_keys centos@hadoop:/home/centos/.ssh/ ... 分發給其餘節點 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

關閉防火牆

爲了保證集羣正常啓動,先要關閉各臺主機的防火牆,一些命令以下:

[cnetos 6.5以前的版本] $>sudo service firewalld stop //中止服務 $>sudo service firewalld start //啓動服務 $>sudo service firewalld status //查看狀態 [centos7] $>sudo systemctl enable firewalld.service //"開機啓動"啓用 $>sudo systemctl disable firewalld.service //"開機自啓"禁用 $>sudo systemctl start firewalld.service //啓動防火牆 $>sudo systemctl stop firewalld.service //中止防火牆 $>sudo systemctl status firewalld.service //查看防火牆狀態 [開機自啓] $>sudo chkconfig firewalld on //"開啓自啓"啓用 $>sudo chkconfig firewalld off //"開啓自啓"禁用 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

兩個批處理腳本

提示:爲了全局可用,腳本都放在 /usr/local/bin 目錄下。只在hadoop1和hadoop2節點配置

//以本地用戶身份建立xcall.sh $>touch ~/xcall.sh //centos //將其複製到 /usr/local/bin 目錄下 $>sudo mv xcall.sh /usr/local/bin //修改權限 $>sudo chmod a+x xcall.sh //添加腳本 $>sudo nano xcall.sh 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
批分發指令腳本(xcall.sh)
#!/bin/bash params=$@ i=1 for (( i=1 ; i <= 8 ; i = $i + 1 )) ; do echo ============= s$i $params ============= ssh hadoop$i "$params" done 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
批同步腳本(xsync.sh):相似於 scp 指令
#!/bin/bash if [[ $# -lt 1 ]] ; then echo no params ; exit ; fi p=$1 #echo p=$p dir=`dirname $p` #echo dir=$dir filename=`basename $p` #echo filename=$filename cd $dir fullpath=`pwd -P .` #echo fullpath=$fullpath user=`whoami` for (( i = 1 ; i <= 8 ; i = $i + 1 )) ; do echo ======= hadoop$i ======= rsync -lr $p ${user}@hadoop$i:$fullpath done ; 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

集羣環境搭建

安裝JDK

  • 準備JDK:jdk-8u65-linux-x64.tar.gz,將其上傳到主機hadoop1的 /home/centos/localsoft 目錄下,該目錄用於存放全部須要安裝的軟件安裝包

  • 在根目錄下(/)新建一個 soft 文件夾,並將該文件夾的用戶組權限和用戶權限改成 centos,該文件夾下爲全部須要安裝的軟件

//建立soft文件夾 [centos@hadoop1 /home/centos]$ sudo mkdir /soft //修改權限(centosmin0是本身的本機用戶名) [centos@hadoop1 /home/centos]$ sudo chown centos:centos /soft 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 解壓 jdk-8u65-linux-x64.tar.gz 到 /soft 目錄下,並建立符號連接
// 從 /home/centos/localsoft 下解壓到 /soft [centos@hadoop1 /home/centos/localsoft]$ tar -xzvf jdk-8u65-linux-x64.tar.gz -C /soft // 建立符號連接 [centos@hadoop1 /soft]$ ln -s /soft/jdk1.8.0_65 jdk 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 在 /etc/profile 文件中配置環境變量,同時 source /etc/profile,使其當即生效
// 進入profile [centos@hadoop1 /home/centos]$ sudo nano /etc/profile // 環境變量 # jdk export JAVA_HOME=/soft/jdk export PATH=$PATH:$JAVA_HOME/bin // source 當即生效 [centos@hadoop1 /home/centos]$ source /etc/profile 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 檢驗是否安裝配置成功
[centos@hadoop1 /home/centos]$ java -version // 顯示以下 java version "1.8.0_65" Java(TM) SE Runtime Environment (build 1.8.0_65-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 按照以上步驟配置其餘主句(hadoop2~hadoop8):可使用批分發指令(xsync.sh分發文件給其餘7臺主機節點)

Hadoop安裝配置(手動HA搭建)

1. hadoop安裝配置
  • 準備hadoop:hadoop-2.7.6.tar.gz,解壓到 /soft 目錄下,建立符號連接
// 從 /home/centos/localsoft 下解壓到 /soft [centos@hadoop1 /home/centos/localsoft]$ tar -xzvf hadoop-2.7.6.tar.gz -C /soft // 建立符號連接 [centos@hadoop1 /soft]$ ln -s /soft/hadoop-2.7.6 hadoop 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 在 /etc/profile 下配置環境變量,source /etc/profile 當即生效,使用 hadoop version 檢測是否安裝成功
// 進入profile [centos@hadoop1 /home/centos]$ sudo nano /etc/profile // 環境變量 # hadoop export HADOOP_HOME=/soft/hadoop export PATH=$PATH:$HADOOP_HOME/bin/:$HADOOP_HOME/sbin // source 當即生效 [centos@hadoop1 /home/centos]$ source /etc/profilea // 檢測是否安裝成功 [centos@hadoop1 /home/centos]$ hadoop version 顯示以下: Hadoop 2.7.6 Subversion https://shv@git-wip-us.apache.org/repos/asf/hadoop.git -r 085099c66cf28be31604560c376fa282e69282b8 Compiled by kshvachk on 2018-04-18T01:33Z Compiled with protoc 2.5.0 From source with checksum 71e2695531cb3360ab74598755d036 This command was run using /soft/hadoop-2.7.6/share/hadoop/common/hadoop-common-2.7.6.jar 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

提示: 如今的操做在hadoop1節點上,先不用在其餘節點進行安裝配置,等後續配置結束後再一塊兒將配置傳給其餘節點,能大大節省工做量。

2. hadoop手動NameNode HA搭建

基於hadoop的原生NameNode HA搭建,後面會與zookeeper集羣進行整合,實現自動容災(Yarn+NameNode)

  • 進入 /soft/hadoop/etc 目錄,複製 hadoop 文件爲:full,ha,pesudo,並建立指向ha的符號連接hadoop
[centos@hadoop1 /soft/hadoop/etc]$ cp hadoop ha [centos@hadoop1 /soft/hadoop/etc]$ cp hadoop full [centos@hadoop1 /soft/hadoop/etc]$ cp hadoop pesudo // 建立符號連接 [centos@hadoop1 /soft/hadoop/etc]$ ln -s /soft/hadoop/etc/ha hadoop 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 進入 ha 目錄下配置4個文件:core-site.xml;hdfs-site.xml;mapred-site.xml;yarn-site.xml

[core-site.xml]

<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://mycluster</value> </property> <!--- 配置新的本地目錄 --> <property> <name>hadoop.tmp.dir</name> <value>/home/centos/hadoop</value> </property> <property> <name>ipc.client.connect.max.retries</name> <value>20</value> </property> <property> <name>ipc.client.connect.retry.interval</name> <value>5000</value> </property> </configuration> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

[hdfs-site.xml]

<configuration> <!-- 配置nameservice --> <property> <name>dfs.nameservices</name> <value>mycluster</value> </property> <!-- myucluster下的名稱節點兩個id --> <property> <name>dfs.ha.namenodes.mycluster</name> <value>nn1,nn2</value> </property> <!-- 配置每一個nn的rpc地址 --> <property> <name>dfs.namenode.rpc-address.mycluster.nn1</name> <value>hadoop1:8020</value> </property> <property> <name>dfs.namenode.rpc-address.mycluster.nn2</name> <value>hadoop2:8020</value> </property> <!-- 配置webui端口 --> <property> <name>dfs.namenode.http-address.mycluster.nn1</name> <value>hadoop1:50070</value> </property> <property> <name>dfs.namenode.http-address.mycluster.nn2</name> <value>hadoop2:50070</value> </property> <!-- 名稱節點共享編輯目錄 --> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://hadoop3:8485;hadoop4:8485;hadoop5:8485;hadoop6:8485;hadoop7:8485;hadoop8:8485/mycluster</value> </property> <!-- java類,client使用它判斷哪一個節點是激活態 --> <property> <name>dfs.client.failover.proxy.provider.mycluster</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <!-- 腳本列表或者java類,在容災狀況下保護激活態的nn --> <property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> </property> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/home/centos/.ssh/id_rsa</value> </property> <!-- 配置JN存放edit的本地路徑 --> <property> <name>dfs.journalnode.edits.dir</name> <value>/home/centos/hadoop/journal</value> </property> </configuration> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61

[mapred-site.xml]

<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

[yarn-site.xml]

<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop1</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 配置 slaves 文件和修改 hadoop-env.sh中的一個細節
// 配置 DataNode 從屬節點 [centos@hadoop1 /soft/hadoop/etc/ha]$ nano slaves 添加以下: hadoop3 hadoop4 hadoop5 hadoop6 hadoop7 hadoop8 // 修改hadoop-env.sh中的一個細節 [centos@hadoop1 /soft/hadoop/etc/ha]$ nano hadoop-env.sh 將 export JAVA_HOME={JAVA_HOME} 改成 export JAVA_HOME=/soft/jdk 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 將上面全部的配置都分發給其餘7臺主機節點
// 批分發 [centos@hadoop1 /soft]$ xsync hadoop-2.7.6 // 將符號連接也分發給其餘主機節點 [centos@hadoop1 /soft]$ rsync -lr hadoop centos:/soft/ 
  • 1
  • 2
  • 3
  • 4
  • 5

注意: /etc/profile 配置文件還需每臺主機單獨配置,配置內容與hadoop1同樣

// 環境變量 # hadoop export HADOOP_HOME=/soft/hadoop export PATH=$PATH:$HADOOP_HOME/bin/:$HADOOP_HOME/sbin 
  • 1
  • 2
  • 3
  • 4
3. 啓動hadoop HA集羣進行測試
  • 在jn節點(每一個數據節點就是一個jn節點)啓動jn進程(hadoop3, hadoop4, hadoop5,hadoop6,hadoop7,hadoop8)
$>hadoop-daemon.sh start journalnode 
  • 1
  • 分別在hadoop1和hadoop2節點上進行數據格式化(兩個節點都須要格式化,否則NameNode進程沒法啓動)
// hadoop1 節點 [centos@hadoop1 /home/centos]$ hadoop namenode -format // hadoop2 節點 [centos@hadoop2 /home/centos]$ hadoop namenode -format 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 在一個NN上執行如下命令,完成edit日誌到jn節點的傳輸
[centos@hadoop1 /home/centos]$ hdfs namenode -initializeSharedEdits 
  • 1
  • 啓動全部節點
[hadoop1] $>hadoop-daemon.sh start namenode //啓動名稱節點 $>hadoop-daemons.sh start datanode //啓動全部數據節點 [hadoop2] $>hadoop-daemon.sh start namenode //啓動名稱節點 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

HA 手動管理命令:

$>hdfs haadmin -transitionToActive nn1 //切成激活態 $>hdfs haadmin -transitionToStandby nn1 //切成待命態 $>hdfs haadmin -transitionToActive --forceactive nn2//強行激活 $>hdfs haadmin -failover nn1 nn2 //模擬容災演示,從nn1切換到nn2 
  • 1
  • 2
  • 3
  • 4
  • 在webui下查看狀態:hadoop1:50070;hadoop2:50070

注意!!!

  • 在進行格式化以前必定要先啓動數據節點上的journalnode進程
  • 兩臺容災節點(NN1,NN2)都須要進行格式化

zookeeper安裝配置(Yarn+NameNode HA)

zookeeper集羣節點爲:hadoop3,hadoop4,hadoop5。先在hadoop3上進行安裝配置,而後分發給hadoop4和hadoop5節點。

1. zookeeper安裝配置
  • 準備安裝包:zookeeper-3.4.12.tar.gz,解壓到 /soft 目錄下,添加符號連接
// 解壓 [centos@hadoop3 /home/centos/localsoft]$ tar -xzvf zookeeper-3.4.12.tar.gz -C /soft/ // 建立符號連接 [centos@hadoop3 /soft]$ln -s /soft/zookeeper-3.4.12 zk 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 在 /etc/profile 中配置環境變量,source /etc/profile 當即生效
[centos@hadoop3 /home/centos]$sudo nano /etc/profile //導入環境變量 export ZK_HOME=/soft/zk export PATH=$PATH:$ZK_HOME/bin 
  • 1
  • 2
  • 3
  • 4
  • 5
2. zookeeper徹底分佈式集羣
  • 進入 /soft/zk/conf 目錄下,配置zk
// 複製 [centos@hadoop3 /soft/zk/conf]$cp zoo_sample.cfg zoo.cfg // 配置 [centos@hadoop3 /soft/zk/conf]$nano zoo.cfg // 配置以下: tickTime=2000 initLimit=10 syncLimit=5 dataDir=/home/centos/zookeeper //配置臨時文件路徑 clientPort=2181 server.1=hadoop3:2888:3888 server.2=hadoop4:2888:3888 server.3=hadoop5:2888:3888 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 分發上面全部的配置給另外兩個節點(從hadoop3分發到hadoop4和hadoop5),分別配置兩個節點的 /etc/profile 環境
// 分發給hadoop4 [centos@hadoop3 /soft]$scp -r zookeeper-3.4.12 centos@hadoop4:/soft/ // 分發給hadoop5 [centos@hadoop3 /soft]$scp -r zookeeper-3.4.12 centos@hadoop5:/soft/ // 分發符號引用給hadoop4 [centos@hadoop3 /soft]$rsync -lr zk centos@hadoop4:/soft/ // 分發符號引用給hadoop5 [centos@hadoop3 /soft]$rsync -lr zk centos@hadoop5:/soft/ //導入環境變量 export ZK_HOME=/soft/zk export PATH=$PATH:$ZK_HOME/bin 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 在每臺主機的/home/centos/zookeeper中添加myid,內容分別是1,2,3
[hadoop3] [centos@hadoop3 /home/centos]$ echo 1 > /home/centos/zookeeper/myid [hadoop4] [centos@hadoop4 /home/centos]$ echo 2 > /home/centos/zookeeper/myid [hadoop5] [centos@hadoop5 /home/centos]$ echo 3 > /home/centos/zookeeper/myid 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 啓動服務器集羣,查看每臺服務器的狀態
//啓動服務器 $> zkServer.sh start //關閉 $> zkServer.sh stop //查看狀態 $>zkServer.sh status 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

zookeeper基本命令:

$>zkCli.sh -server hadoop3:2181 //進入zk命令行 $zk]help //查看幫助 $zk]quit //退出 $zk]create /a tom // $zk]get /a //查看數據 $zk]ls / //列出節點 $zk]set /a tom //設置數據 $zk]delete /a //刪除一個節點 $zk]rmr /a //遞歸刪除全部節點。 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
3. hadoop+zk 高可用配置
1. 準備階段
  • 停掉全部的hadoop進程(保證沒有任何進程在運行)
[centos@hadoop1 /home/centos]$ 
  • 1
  • 刪除全部節點的日誌和本地數據
// 刪除全部節點的日誌 [centos@hadoop1 /home/centos]$ xcall.sh "rm -rf /soft/hadoop/logs/*" // 刪除全部節點的本地數據 [centos@hadoop1 /home/centos]$ xcall.sh "rm -rf /home/centos/hadoop/*" 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 登陸每臺JN節點主機,啓動JN進程(hadoop3, hadoop4, hadoop5,hadoop6,hadoop7,hadoop8)
$> hadoop-daemon.sh start journalnode 
  • 1
  • 登陸其中一個名稱節點(NN),格式化文件系統(登陸hadoop1)
[centos@hadoop1 /home/centos]$ hadoop namenode -format 
  • 1
  • 複製hadoop1主機 /home/centos/hadoop/* 的元數據到hadoop2主機
[centos@hadoop1 /home/centos]$ scp -r ~/hadoop/* centos@hadoop2:/home/centos/hadoop 
  • 1
  • 在未格式化的NN(hadoop2)節點上作standby引導

    • 啓動hadoop1主機的名稱節點
    [centos@hadoop1 /home/centos]$ hadoop-daemon.sh start namenode 
    • 1
    • 登陸到hadoop2節點,作standby引導(選擇:N)
    [centos@hadoop2 /home/centos]$ hdfs namenode -bootstrapStandby 
    • 1
    • 登陸hadoop1,將hadoop1的edit日誌初始化到JN節點(選擇:Y)
    [centos@hadoop1 /home/centos]$ hdfs namenode -initializeSharedEdits 
    • 1

    注意: 假如出現被鎖住沒法引導的狀況,須要刪除 /home/centos/hadoop/dfs/name 下的 in_use.lock 文件

  • 啓動全部數據節點

[centos@hadoop1 /home/centos]$ hadoop-daemons.sh start datanode 
  • 1
  • 登陸到hadoop2主機,啓動名稱節點(NN)
[centos@hadoop1 /home/centos]$ hadoop-daemon.sh start namenode 
  • 1
2. NameNode高可用配置
  • 中止全部進程
[centos@hadoop1 /home/centos]$ stop-all.sh 
  • 1
  • 配置hdfs-site.xml和core-site.xml,分發兩個文件給全部主機
//配置core-site.xml,指定zk的鏈接地址 [core-site.xml] <property> <name>ha.zookeeper.quorum</name> <value>hadoop3:2181,hadoop4:2181,hadoop5:2181</value> </property> //配置hdfs-site.xml,啓用自動容災 [hdfs-site.xml] <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> //分發文件到其餘主機 [centos@hadoop1 /soft/hadoop/etc/ha]$ xsync.sh hdfs-site.xml [centos@hadoop1 /soft/hadoop/etc/ha]$ xsync.sh core-site.xml 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 開啓ZooKeeper集羣(hadoop3, hadoop4, hadoop5)
$> zkServer.sh start 
  • 1
  • 登陸其中的一臺NN(hadoop1),在ZK中初始化HA狀態,進入zk客戶端查看
[centos@hadoop1 /home/centos]$ hdfs zkfc -formatZK // 進入zk客戶端 [centos@hadoop3 /home/centos]$ zkCli.sh 
  • 1
  • 2
  • 3
  • 4
  • 啓動hdfs進程
[centos@hadoop1 /home/centos]$ start-dfs.sh 
  • 1
3. Yarn高可用配置

yarn的高可用配置相對簡單

  • 配置 yarn-site.xml,分發給其餘主機節點
<property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <property> <name>yarn.resourcemanager.cluster-id</name> <value>cluster1</value> </property> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>hadoop1</value> </property> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>hadoop2</value> </property> <property> <name>yarn.resourcemanager.webapp.address.rm1</name> <value>hadoop1:8088</value> </property> <property> <name>yarn.resourcemanager.webapp.address.rm2</name> <value>hadoop2:8088</value> </property> <property> <name>yarn.resourcemanager.zk-address</name> <value>hadoop3:2181,hadoop4:2181,hadoop5:2181</value> </property> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 啓動yarn進程(hadoop1)。hadoop沒有啓動兩個resourcemanager,須要手動啓動另一個。
[hadoop1] [centos@hadoop1 /home/centos]$ start-yarn.sh [hadoop2] [centos@hadoop2 /home/centos]$ yarn-daemon.sh start resourcemanager //管理命令 //查看狀態 $>yarn rmadmin -getServiceState rm1 //切換狀態到standby $>yarn rmadmin -transitionToStandby rm1 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 查看 hadoop1 和 hadoop2 的資源管理器
hadoop1:8088 hadoop2:8088 
  • 1
  • 2

Hbase安裝配置(HA)

5臺主機節點:hadoop3,hadoop4,hadoop5,hadoop6,hadoop7。hadoop3是master節點,其他節點爲slave節點。

1. ssh配置

hbase是具備從屬關係的集羣,因此hadoop3須要可以免密登陸到其餘四個節點主機,須要進行ssh免密登陸配置

  • 在hadoop3上生成祕鑰對,重命名公鑰,並將公鑰添加到authorized_keys
// 生成祕鑰對 [centos@hadoop3 /home/centos]$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa // 重命名 [centos@hadoop3 /home/centos/.ssh]$ mv id_rsa.pub id_rsa_hadoop3.pub // 添加公鑰到authorized_keys [centos@hadoop3 /home/centos/.ssh]$ cat id_rsa_hadoop3.pub >> authorized_keys 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 將公鑰發給其餘四個節點,並將公鑰添加到authorized_keys中
[centos@hadoop3 /home/centos/.ssh]$scp id_rsa_hadoop3.pub centos@hadoop4:~/.ssh/ [centos@hadoop3 /home/centos/.ssh]$scp id_rsa_hadoop3.pub centos@hadoop5:~/.ssh/ [centos@hadoop3 /home/centos/.ssh]$scp id_rsa_hadoop3.pub centos@hadoop6:~/.ssh/ [centos@hadoop3 /home/centos/.ssh]$scp id_rsa_hadoop3.pub centos@hadoop7:~/.ssh/ // 添加公鑰到authorized_keys中 $> cat id_rsa_hadoop3.pub >> authorized_keys 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
2. hbase 安裝配置
  • 準備hbase安裝包:hbase-1.2.6-bin.tar.gz,解壓到 /soft 目錄下,建立符號連接
[centos@hadoop3 /home/centos]$ tar -xzvf hbase-1.2.6-bin.tar.gz -C /soft/ // 建立符號連接 [centos@hadoop3 /soft]$ln -s /soft/hbase-1.2.6 hbase 
  • 1
  • 2
  • 3
  • 4
  • 在 /etc/profile 線配置環境變量,source /etc/profile 當即生效
[centos@hadoop3 /home/centos]$ sudo nano /etc/profile 導入環境變量: export HBASE_HOME=/soft/hbase export PATH=$PATH:$HBASE_HOME/bin // hadoop version HBase 1.2.6 Source code repository file:///home/busbey/projects/hbase/hbase-assembly/target/hbase-1.2.6 revision=Unknown Compiled by busbey on Mon May 29 02:25:32 CDT 2017 From source with checksum 7e8ce83a648e252758e9dae1fbe779c9 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
3. hbase高可用集羣(整合zookeeper)
  • 配置 /soft/hbase/conf/hbase-env.sh和 /soft/hbase/conf/regionservers
// 配置hbase-env.sh [centos@hadoop3 /soft/hbase/conf]$ nano hbase-env.sh //找到以下配置進行修改 export JAVA_HOME=/soft/jdk export HBASE_MANAGES_ZK=false export HBASE_PID_DIR=/home/centos/hbase/pids export HBASE_CLASSPATH=$HBASE_CLASSPATH:/soft/hadoop/etc/hadoop // 配置 regionservers [centos@hadoop3 /soft/hbase/conf]$ nano regionservers hadoop4 hadoop5 hadoop6 hadoop7 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 配置 /soft/hbase/conf/hbase-site.xml 文件
[centos@hadoop3 /soft/hbase/conf]$nano hbase-site.xml [hbase-site.xml] <!-- 使用徹底分佈式 --> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <!-- 指定hbase數據在hdfs上的存放路徑 --> <property> <name>hbase.rootdir</name> <value>hdfs://mycluster/hbase</value> </property> <!-- 配置zk地址 --> <property> <name>hbase.zookeeper.quorum</name> <value>hadoop3:2181,hadoop4:2181,hadoop5:2181</value> </property> <!-- zk的本地目錄 --> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/home/centos/zookeeper</value> </property> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 在 /soft/hbase/conf/ 目錄下建立到hadoop的hdfs-site.xml符號鏈接
[centos@hadoop3 /soft/hbase/conf]$ ln -s /soft/hadoop/etc/hadoop/hdfs-site.xml /soft/hbase/conf/hdfs-site.xml 
  • 1
  • 將上面的全部配置都發給其餘節點(hadoop4,hadoop5,hadoop6,hadoop7)
// 解壓文件 [centos@hadoop3 /soft]$ scp -r hbase-1.2.6 centos@hadoop4:/soft/ [centos@hadoop3 /soft]$ scp -r hbase-1.2.6 centos@hadoop5:/soft/ [centos@hadoop3 /soft]$ scp -r hbase-1.2.6 centos@hadoop6:/soft/ [centos@hadoop3 /soft]$ scp -r hbase-1.2.6 centos@hadoop7:/soft/ // 分發符號連接 [centos@hadoop3 /soft]$ rsync -lr hbase centos@hadoop4:/soft/ [centos@hadoop3 /soft]$ rsync -lr hbase centos@hadoop5:/soft/ [centos@hadoop3 /soft]$ rsync -lr hbase centos@hadoop6:/soft/ [centos@hadoop3 /soft]$ rsync -lr hbase centos@hadoop7:/soft/ // 在這4臺主機節點的 /etc/profile 中配置環境變量,source /etc/profile 當即生效 export HBASE_HOME=/soft/hbase export PATH=$PATH:$HBASE_HOME/bin 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 啓動hbase集羣

注意: 在啓動hbase集羣前,應該保證hadoop集羣啓動,而且NameNode節點爲激活狀態。不然會報異常:Operation category READ is not supported in state standby

[centos@hadoop3 /home/centos]$ start-hbase.sh 
  • 1

hbase基本命令

//啓動HBase集羣: $> start-hbase.sh //單獨啓動一個HMaster進程: $> hbase-daemon.sh start master //單獨中止一個HMaster進程: $> hbase-daemon.sh stop master //單獨啓動一個HRegionServer進程: $> hbase-daemon.sh start regionserver //單獨中止一個HRegionServer進程: $> hbase-daemon.sh stop regionserver //進入hbase shell $> hbase shell 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 在webui中查看:hadoop3:16010

Kafka集羣安裝配置

在hadoop6,hadoop7,hadoop8三臺主機上構建kafka集羣

  • 準備kafka安裝包:kafka_2.11-2.0.0.tgz,解壓到 /soft 目錄下,並建立符號連接
// 解壓 [centos@hadoop6 /home/centos/localsoft]$tar -xzvf kafka_2.11-2.0.0.tgz -C /soft/ // 建立符號連接 [centos@hadoop6 /soft]$ln -s /soft/kafka_2.11-2.0.0 kafka 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 在 /etc/profile 中配置環境變量,source /etc/profile 當即生效
[centos@hadoop6 /soft]$sudo nano /etc/profile 導入環境變量 export KAFKA_HOME=/soft/kafka export PATH=$PATH:$KAFKA_HOME/bin 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 配置kafka集羣,主機:hadoop6,hadoop7,hadoop8。在 /soft/kafka/config/server.properties 文件中進行以下修改
[centos@hadoop6 /soft/kafka/config]$nano server.properties # The id of the broker. This must be set to a unique integer for each broker. broker.id=6 // hadoop6,hadoop7,hadoop8的broker_id分別爲 6,7,8 listeners=PLAINTEXT://:9092 # A comma separated list of directories under which to store log files log.dirs=/home/centos/kafka/logs # Zookeeper connection string (see zookeeper docs for details). # This is a comma separated host:port pairs, each corresponding to a zk # server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002". # You can also append an optional chroot string to the urls to specify the # root directory for all kafka znodes. zookeeper.connect=hadoop6:2181,hadoop7:2181,hadoop8:2181 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 把上面的配置分發其餘兩臺主機節點,修改 /soft/kafka/config/server.properties 中的 broker_id 號,在 /etc/profile 下配置環境變量,source /etc/profile 當即生效
// 發送解壓文件 [centos@hadoop6 /soft]$scp -r kafka_2.11-2.0.0 centos@hadoop7:/soft/ [centos@hadoop6 /soft]$scp -r kafka_2.11-2.0.0 centos@hadoop8:/soft/ // 發送符號連接 [centos@hadoop6 /soft]$rsync -lr kafka centos@hadoop7:/soft/ [centos@hadoop6 /soft]$rsync -lr kafka centos@hadoop8:/soft/ 導入環境變量 export KAFKA_HOME=/soft/kafka export PATH=$PATH:$KAFKA_HOME/bin 分別修改broker_id 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 啓動kafka服務器

    • 先啓動ZooKeeper:zkServer.sh start

    • 啓動kafka集羣:hadoop3,hadoop4,hadoop5

    // 守護進程 [centos@hadoop6 /home/centos]$ kafka-server-start.sh /soft/kafka/config/server.properties & 
    • 1
    • 2
    • 驗證kafka集羣服務器是否啓動
    [centos@hadoop6 /home/centos]$ netstat -anop | grep 9092 
    • 1

Storm集羣安裝配置

在hadoop3,hadoop4,hadoop5,hadoop6,hadoop7 五臺主機上構建storm集羣

  • 準備storm安裝包:apache-storm-1.1.3.tar.gz,解壓到 /soft 目錄下,並建立符號連接
// 解壓 [centos@hadoop3 /home/centos/localsoft]$ tar -xzvf apache-storm-1.1.3.tar.gz -C /soft/ // 建立符號連接 [centos@hadoop3 /soft]$ ln -s /soft/apache-storm-1.1.3 storm 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 在 /etc/profile 中配置環境變量,source /etc/profile 當即生效
[centos@hadoop3 /soft]$ sudo nano /etc/profile 導入環境變量 export STORM_HOME=/soft/storm export PATH=$PATH:$STORM_HOME/bin 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 進入 /soft/storm/conf 目錄下,對 storm.yaml 進行以下配置(主機:hadoop3)
[centos@hadoop3 /soft/storm/conf]$ nano storm.yaml storm.zookeeper.servers: - "hadoop3" - "hadoop4" - "hadoop5" nimbus.seeds: ["hadoop3"] storm.local.dir: "/home/centos/storm" storm.zookeeper.port: 2181 ui.host: 0.0.0.0 ui.port: 8080 supervisor.slots/ports: - 6700 - 6701 - 6702 - 6703 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 將上面的配置分發給其餘節點(hadoop4,hadoop5,hadoop6,hadoop7),在 /etc/profile 中配置環境變量,source /etc/profile 當即生效
// 分發解壓文件 [centos@hadoop3 /soft]$scp -r apache-storm-1.1.3 centos@hadoop4:/soft/ [centos@hadoop3 /soft]$scp -r apache-storm-1.1.3 centos@hadoop5:/soft/ [centos@hadoop3 /soft]$scp -r apache-storm-1.1.3 centos@hadoop6:/soft/ [centos@hadoop3 /soft]$scp -r apache-storm-1.1.3 centos@hadoop7:/soft/ // 分發符號連接 [centos@hadoop3 /soft]$rsync -lr storm centos@hadoop4:/soft/ [centos@hadoop3 /soft]$rsync -lr storm centos@hadoop5:/soft/ [centos@hadoop3 /soft]$rsync -lr storm centos@hadoop6:/soft/ [centos@hadoop3 /soft]$rsync -lr storm centos@hadoop7:/soft/ 導入環境變量 export STORM_HOME=/soft/storm export PATH=$PATH:$STORM_HOME/bin 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 啓動集羣

    • 啓動ZooKeeper集羣:zkServer.sh start(hadoop3,hadoop4,hadoop5)

    • 啓動主機hadoop3的 nimbus 進程

    [centos@hadoop3 /home/centos]$ storm nimbus &
    • 1
    • 啓動hadoop4 ~ hadoop7 的 supervisor 進程
    [centos@hadoop3 /home/centos]$ storm supervisor &
    • 1
    • 啓動hadoop3的webui進程
    [centos@hadoop3 /home/centos]$ storm ui &
    • 1
  • 在webui中查看:hadoop3:8080

Spark集羣安裝配置

在8個節點上配置spark集羣,其中hadoop1是master節點,hadoop2~ hadoop8是worker節點

1. spark安裝配置
  • 準備spark安裝包:spark-2.3.1-bin-hadoop2.7.tgz,解壓到 /soft/ 目錄,並建立符號連接:
// 解壓 [centos@hadoop1 /home/centos/localsoft]$tar -xzvf spark-2.3.1-bin-hadoop2.7.tgz -C /soft/ // 建立符號連接 [centos@hadoop1 /soft]$ln -s /soft/spark-2.3.1-bin-hadoop2.7 spark 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 在 /etc/profile 下配置環境變量,source /etc/profile 當即生效
[centos@hadoop1 /home/centos]$sudo nano /etc/profile # spark export SPARK_HOME=/soft/spark export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 驗證:spark-shell,看等否進入spark命令行
2. spark集羣配置(StandAlone:獨立模式)
  • 進入 /soft/spark/conf 目錄下,配置 slaves,spark-env.sh 文件
// 在slaves文件中寫入其餘7臺主機節點 hadoop3 hadoop4 hadoop5 hadoop6 hadoop7 hadoop8 // 在spark-env.sh中寫入 SPARK_MASTER_HOST=hadoop1 SPARK_MASTER_PORT=7077 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 配置 Job History Server,修改 /soft/spark/conf 目錄下的 spark-defaults.conf 和 spark-env.sh 文件
// 在 spark-env.sh 中添加以下配置 export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://hadoop1:8020/directory" // 在spark-defaults.conf中修改 spark.master spark://hadoop1:7077 spark.eventLog.enabled true spark.eventLog.dir hdfs://hadoop1:8020/directory 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 分發上面全部的配置給其餘節點(hadoop2 ~ hadoop8),並在 /etc/profile 中配置環境變量,source /etc/profile 當即生效
// 分發解壓文件 [centos@hadoop1 /soft]$xsync.sh spark-2.3.1-bin-hadoop2.7 // 分發符號連接 [centos@hadoop1 /soft]$rsync -lr spark centos@hadoop2:/soft/ [centos@hadoop1 /soft]$rsync -lr spark centos@hadoop3:/soft/ [centos@hadoop1 /soft]$rsync -lr spark centos@hadoop4:/soft/ [centos@hadoop1 /soft]$rsync -lr spark centos@hadoop5:/soft/ [centos@hadoop1 /soft]$rsync -lr spark centos@hadoop6:/soft/ [centos@hadoop1 /soft]$rsync -lr spark centos@hadoop7:/soft/ [centos@hadoop1 /soft]$rsync -lr spark centos@hadoop8:/soft/ 環境變量 export SPARK_HOME=/soft/spark export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 啓動集羣
[centos@hadoop1 /soft/spark/sbin]$./start-all.sh 
  • 1
  • 運行第一個spark程序(WordCount)
// 進入spark shell [centos@hadoop1 /soft/spark/sbin]$ ./spark-shell // 運行 scala> sc.textFile("hdfs://hadoop1:8020/wc.txt").flatMap(_.split(" ")) .map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://hadoop1:8020/out") 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
3. sparkHA搭建——基於zookeeper
  • 停掉spark集羣:./spark-stop.sh

  • 修改 spark-env.sh 文件

// 添加以下配置 #ZK HA export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hadoop3:2181,hadoop3:2181,hadoop4:2181 -Dspark.deploy.zookeeper.dir=/spark" MASTER=spark://hadoop1:7077,spark://hadoop2:7077 bin/spark-shell 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 分發修改後的spark-env.sh文件給其餘節點。在hadoop1上啓動全部worker進程和master進程,在hadoop2上啓動另外一個master進程
[centos@hadoop1 /soft/spark/sbin]$ ./start-all.sh [centos@hadoop2 /soft/spark/sbin]$./start-master.sh 
  • 1
  • 2
  • 3

大功告成!

其餘組建安裝配置

mysql、hive、flume …

MySQL安裝配置
1. 安裝MySQL

在Linux上安裝MySQL通常有兩種方式。第一種就是使用yum命令進行安裝(比較輕量,安裝包較小,但依賴多,容易出錯)。第二種方式就是經過解壓MySQL包安裝(包比較大,可是不容易出錯)。本文采用第二種方式安裝配置MySQL。

$> rpm -qa|grep mariadb // 查詢出來已安裝的mariadb $> rpm -e --nodeps 文件名 // 卸載mariadb,文件名爲上述命令查詢出來的文件 
  • 1
  • 2
  • 刪除 etc目錄下的 my.cnf
$> rm /etc/my.cnf 
  • 1
  • 建立名爲mysql的用戶組,建立一個名爲mysql的用戶,並將該用戶加入mysql用戶組
//建立mysql用戶組 $> groupadd mysql //建立一個用戶名爲mysql的用戶並加入mysql用戶組 $> useradd -g mysql mysql 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 將 mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz 複製到 /usr/local 目錄下,並解壓在當前目錄下
$> cp /mnt/hgfs/bigdata/soft/mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz /usr/local //解壓該壓縮文件 $> tar -zxvf mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 將解壓出來的文件夾重命名爲mysql
$> mv 解壓出來的文件夾名 mysql 
  • 1
  • 將 /usr/local/mysql/support-files 路徑下的 my-default.cnf 文件拷貝到 /etc 目錄下,重命名爲 my.cnf
[root@s201 /usr/local/mysql]# cp my-default.cnf /etc/my.cnf 
  • 1
  • 配置 my.cnf 文件
[root@s201 /usr/local/mysql]# nano /etc/my.cnf [mysql] # 設置mysql客戶端默認字符集 default-character-set=utf8 socket=/var/lib/mysql/mysql.sock [mysqld] skip-name-resolve #設置3306端口 port = 3306 socket=/var/lib/mysql/mysql.sock # 設置mysql的安裝目錄 basedir=/usr/local/mysql # 設置mysql數據庫的數據的存放目錄 datadir=/usr/local/mysql/data # 容許最大鏈接數 max_connections=200 # 服務端使用的字符集默認爲8比特編碼的latin1字符集 18. character-set-server=utf8 # 建立新表時將使用的默認存儲引擎 default-storage-engine=INNODB lower_case_table_name=1 max_allowed_packet=16M user=mysql //設置用戶爲mysql 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 若是是centos精簡版本,可能須要安裝Perl模塊
$> yum install -y perl $> yum install -y perl-Module-Install.noarch 
  • 1
  • 2
  • 若是是centos系統,修改 /etc/selinux/config,把SELINUX=enforcing改成SELINUX=disabled,保存退出後重啓機器

  • 進入安裝 mysql 軟件目錄,安裝數據庫

[root@hadoop1 ~]# cd /usr/local/mysql [root@hadoop1 /usr/local/mysql]# chown -R mysql:mysql ./ 修改當前目錄擁有着爲mysql用戶 [root@hadoop1 /usr/local/mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ 
  • 1
  • 2
  • 3
  • 修改當前 data目錄的擁有者爲 mysql用戶
[root@hadoop1 /usr/local/mysql]# chown -R mysql:mysql data 
  • 1
2. 配置MySQL
  • 授予 my.cnf最大權限
[root@hadoop1 /usr/local/mysql]# chown 777 /etc/my.cnf 
  • 1
  • 複製啓動腳本到資源目錄
[root@hadoop1 /usr/local/mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld 
  • 1
  • 增長 mysqld 服務控制腳本執行權限
[root@hadoop1 /usr/local/mysql]# chmod +x /etc/rc.d/init.d/mysqld 
  • 1
  • 將 mysqld 服務加入到系統服務
[root@hadoop1 /usr/local/mysql]# chkconfig --add mysqld 
  • 1
  • 檢查 mysqld 服務是否已經生效
[root@hadoop1 /usr/local/mysql]# chkconfig --list mysqld 
  • 1

image

  • 在 /var/lib 下建立 mysql 文件夾,修改權限
[root@hadoop1 /usr/local/mysql]# mkdir /var/lib/mysql //設置權限 [root@hadoop1 /usr/local/mysql]# chmod 777 /var/lib/mysql 
  • 1
  • 2
  • 3
  • 4
  • 將 mysql 的 bin 目錄加入 PATH 環境變量,編輯 ~/.bash_profile 文件
[root@hadoop1 /usr/local/mysql]# nano ~/.bash_profile //在文件最後添加以下信息: 指定環境變量啓動程序位置 export PATH=$PATH:/usr/local/mysql/bin //執行下面的命令是修改的內容當即生效 : [root@hadoop1 /usr/local/mysql]# source ~/.bash_profile 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 啓動mysqld
//啓動mysql服務 [root@hadoop1 /usr/local/mysql]# service mysqld start //關閉mysql服務 [root@hadoop1 /usr/local/mysql]# service mysqld stop 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 以 root 帳戶登陸 mysql, 默認是沒有密碼的, 要輸入密碼的時候直接回車便可
[root@hadoop1 /usr/local/mysql]# mysql -u root -p 
  • 1

注意: mysql -u root -p 命令可能會有異常:-bash: mysql: command not found。這是由於系統在默認的命令文件夾 /usr/bin 下沒有找到 mysql 命令,須要在此文件夾下建一個符號連接

[root@hadoop1 /usr/local/mysql]# ln -s /usr/local/mysql/bin/mysql /usr/bin 
  • 1
  • 設置 root 帳戶密碼爲 root
mysql>use mysql mysql>update user set password=password('root') where user='root' and host='localhost'; mysql>flush privileges; 
  • 1
  • 2
  • 3
  • 設置遠程主機登陸,使用下面命令查看和添加,注意下面的 your username 和 your password 改爲你須要設置的用戶和密碼
查看用戶
select Host,User,Password from mysql.user; 建立用戶 create user test identified by '123456'; 分配權限 grant all privileges on *.* to 'test'@'%'identified by '123456' with grant option; //匹配整個數據庫權限 grant all privileges on *.* to 'root'@'%' identified by 'root'; 說明: 第一個’root’是用戶名,第二個’%’是全部的ip均可以遠程訪問,第三個’123456’表示用戶密碼 若是不經常使用就關閉掉。 刷新 flush privileges ; 修改指定用戶密碼 update mysql.user set password=password('新密碼') where User="test" and Host="localhost"; 刪除用戶 delete from user where User='test' and Host='localhost'; 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

image

image

  • CentOS7 防火牆設置
重啓防火牆
firewall-cmd --reload 中止防火牆 systemctl stop firewalld.service 禁止防火牆開機啓動 systemctl disable firewalld.service 刪除 firewall-cmd --zone= public --remove-port=80/tcp --permanent 關閉防火牆 1) 永久性生效,重啓後不會復原 開啓: chkconfig iptables on 關閉: chkconfig iptables off 2) 即時生效,重啓後復原 開啓: service iptables start 關閉: service iptables stop 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 成功示例

image

3. 問題解決
4. 說明

本文詳細參考了 https://blog.csdn.net/u013421629/article/details/79638315 文檔,在此對原做者的辛苦整理表示感謝!!!

Hive安裝配置
1. hive安裝

hadoop3,hadoop4,hadoop5上安裝

  • 準備hive安裝包:apache-hive-2.3.3-bin.tar.gz ,解壓到 /soft 目錄下,並建立符號連接
// 解壓 [centos@hadoop3 /home/centos/localsoft]$ tar -xzvf apache-hive-2.3.3-bin.tar.gz -C /soft // 建立符號連接 [centos@hadoop3 /soft]$ ln -s /soft/apache-hive-2.3.3-bin hive 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 在 /etc/profile 中配置環境變量,source /etc/profile 當即生效
[centos@hadoop3 /home/centos]$ sudo nano /etc/profile 導入環境變量 export HIVE_HOME=/soft/hive export PATH=$PATH:$HIVE_HOME/bin 
  • 1
  • 2
  • 3
  • 4
  • 5
2. hive配置

使用MySQL來存放hive的元數據

  • 將mysql的驅動程序複製到 /soft/hive/lib 目錄下
[centos@hadoop3 /home/centos/localsoft]$cp mysql-connector-java-5.1.44.jar /soft/hive/lib/ 
  • 1
  • 將 /soft/hive/conf/hive-default.xml.template 文件複製爲 hive-site.xml,並進行以下配置:
$> cp /soft/hive/conf/hive-default.xml.template /soft/hive/conf/hive-site.xml //配置以下屬性 <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://59.68.29.79:3306/hive</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>root</value> </property> <property> <name>hive.exec.local.scratchdir</name> <value>/home/centos/hive</value> </property> <property> <name>hive.downloaded.resources.dir</name> <value>/home/centos/hive/downloads</value> </property> <property> <name>hive.querylog.location</name> <value>/home/centos/hive/querylog</value> </property> <property> <name>hive.server2.logging.operation.log.location</name> <value>/home/centos/hive/server2_logs</value> </property> <property> <name>hive.metastore.schema.verification</name> <value>false</value> </property> <property> <name>hive.server2.enable.doAs</name> <value>false</value> </property> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 在mysql中建立存放hive元數據的數據庫 hive
mysql> create database hive; 
  • 1
  • 初始化hive的元數據到mysql中
[centos@hadoop3 /soft/hive/bin]$schematool -dbType mysql -initSchema 
  • 1
  • 向其餘兩臺主機發送全部配置,在 /etc/profile 中配置環境變量,source /etc/profile 當即生效
// 分發解壓文件 [centos@hadoop3 /soft]$scp -r apache-hive-2.3.3-bin centos@hadoop4:/soft/ [centos@hadoop3 /soft]$scp -r apache-hive-2.3.3-bin centos@hadoop5:/soft/ // 分發符號連接 [centos@hadoop3 /soft]$rsync -lr hive centos@hadoop4:/soft/ [centos@hadoop3 /soft]$rsync -lr hive centos@hadoop5:/soft/ 導入環境變量 export HIVE_HOME=/soft/hive export PATH=$PATH:$HIVE_HOME/bin 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

hive的基本命令:

// 進入hive [centos@hadoop3 /home/centos]$ hive $hive>create database mydb2 ; //建立數據庫 mydb2 $hive>show databases ; $hive>use mydb2 ; $hive>create table mydb2.t(id int,name string,age int); $hive>drop table t ; $hive>drop table mydb2.t ; $hive>select * from mydb2.t ; //查看指定庫的表 $hive>exit ; //退出 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
Flume安裝配置

Flume是一個日誌採集系統,在8臺主機上都進行配置

  • 準備安裝包:apache-flume-1.8.0-bin.tar.gz,解壓到 /soft 目錄下,並建立符號連接
// 解壓 [centos@hadoop1 /home/centos/localsoft]$tar -xzvf apache-flume-1.8.0-bin.tar.gz -C /soft/ // 建立符號連接 [centos@hadoop1 /soft]$ln -s /soft/apache-flume-1.8.0-bin flume 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 在 /etc/profile 中配置環境變量,source /etc/profile 當即生效
[centos@hadoop3 /home/centos]$ sudo nano /etc/profile 導入環境變量 export FLUME_HOME=/soft/flume export PATH=$PATH:$FLUME_HOME/bin 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 分發全部配置給其餘主機節點,在 /etc/profile 中配置環境變量,source /etc/profile 當即生效
// 分發解壓文件 [centos@hadoop1 /soft]$xsync.sh apache-flume-1.8.0-bin // 分發符號連接 [centos@hadoop1 /soft]$rsync -lr flume centos@hadoop2:/soft/ [centos@hadoop1 /soft]$rsync -lr flume centos@hadoop3:/soft/ [centos@hadoop1 /soft]$rsync -lr flume centos@hadoop4:/soft/ [centos@hadoop1 /soft]$rsync -lr flume centos@hadoop5:/soft/ [centos@hadoop1 /soft]$rsync -lr flume centos@hadoop6:/soft/ [centos@hadoop1 /soft]$rsync -lr flume centos@hadoop7:/soft/ [centos@hadoop1 /soft]$rsync -lr flume centos@hadoop8:/soft/ 導入環境變量 export HIVE_HOME=/soft/hive export PATH=$PATH:$HIVE_HOME/bin
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 驗證是否安裝成功:flume-ng version

本文轉與http://www.pianshen.com/article/849261746/

相關文章
相關標籤/搜索