hadoop大數據集羣搭建詳細教程

1. 集羣結構(hadoop3.1.1 + zookeeper3.5.5 + hbase2.0.0 + spark2.3.4 + phoenix5.0.0)

  類型 zookeeper Hbase Spark Phoenix
master NameNode HMaster Master core+server jar包
slave1 DataNode HRegionServer Worker core+server jar包
slave2 DataNode HRegionServer Worker core+server jar包
slave3 DataNode HRegionServer Worker core+server jar包

2. hosts文件

IP hostname
10.18.218.241 master
10.18.218.242 slave1
10.18.218.243 slave2
10.18.218.244 slave3

3. hadoop安裝

3.1 修改主機名(全部主機上實現)

vim /etc/hostname 將內容全刪除後修改爲:master(slave1\slave2\slave3同樣操作)

3.2 查看當前host$ hostname

3.3 修改hosts文件(全部主機上實現)

vi /etc/hosts 修改爲上述hosts文件,將ip和hostname作映射

3.4 關閉防火牆和selinux(使用root用戶,全部主機進行該操作)

關閉防火牆

systemctl stop firewalld.service
systemctl disable firewalld.service

關閉selinux

vi /etc/selinux/config

將SELinux status參數設定爲關閉狀態

SELinux status:                 disabled

需要重啓需要重啓需要重啓

3.5 建立hadoop用戶(全部主機上實現)

useradd -m hadoop
passwd hadoop  #123456(忽略警告)
usermod -a -G hadoop hadoop   # 將hadoop用戶移進hadoop用戶組
cat  /etc/group    #查看用戶組

3.6 爲hadoop用戶添加超級用戶權限(全部主機上實現)

$ visudo

##在行 root ALL=(ALL) ALL下添加
%hadoop ALL=(ALL) ALL
hadoop ALL=(ALL) ALL

並切換到hadoop用戶:$ su hadoop

3.7 設置hadoop用戶ssh免密通信

先對每個主機都生成rsa密鑰,如生成master的rsa密鑰

ssh-keygen -t rsa

後面都可以在master操作,將生成的rsa追加寫入授權文件

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

給授權文件權限

chmod 600 ~/.ssh/authorized_keys

對本機ssh測試(第一次需要密碼)

ssh master

將master上的authorized_keys傳到slave1

sudo scp ~/.ssh/id_rsa.pub hadoop@slave1:~/

登陸連接到slave1進行操作:

ssh slave1
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
#修改權限
chmod 600 ~/.ssh/authorized_keys
#退出slave1
exit

進行免密測試

ssh slave1

其他主機同理

3.8 安裝java(統一版本)

這裏安裝的版本爲:jdk-8u211-linux-x64.tar.gz 編輯環境變量

vi  ~/.bashrc

將java目錄添加進環境

#java 1.8
JAVA_HOME=/usr/local/java/jdk1.8.0_211
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

查看JAVA環境變量

echo $JAVA_HOME

3.9 下載hadoop

下載3.1.1版本

3.10 解壓

使用命令將解壓放至home/hadoop 下,我的解壓完後目錄爲:

/home/hadoop/hadoop-3.1.1

3.11 修改配置文件(都在hadoop/hadoop-3.1.1/etc/hadoop/目錄下)

3.11.1 修改hadoop-env.sh文件

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

把JAVA_HOME添加進去

export JAVA_HOME=/usr/local/java/jdk1.8.0_211

3.11.2 修改 core-site.xml

<configuration>
    <!-- 指定 namenode 的通信地址 默認 8020 端口 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000/</value>
    </property>

    <!-- 指定 hadoop 運行時產生文件的存儲路徑 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/hadoop-3.1.1/tmp</value>
    </property>
    
	<!-- 安裝zookeeper需要,否則不要-->
    <!-- 指定zookeeper地址,clientPort=2181 -->
    <property>
 
        <name>ha.zookeeper.quorum</name>
 
        <value>slave1:2181,slave2:2181,slave3:2181</value>
 
    </property>

</configuration>

3.11.3 修改hdfs-site.xml

<configuration>
    
    <!-- namenode 上存儲 hdfs 名字空間元數據-->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/home/hadoop/hadoop-3.1.1/namenode</value>
    </property>

    <!-- datanode 上數據塊的物理存儲位置-->  
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/home/hadoop/hadoop-3.1.1/datanode</value>
    </property>

    <!-- 設置 hdfs 副本數量 -->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>

</configuration>

3.11.4 修改 mapred-site.xml

<configuration>

    <!-- 指定yarn運行-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

    <property>
        <name>yarn.app.mapreduce.am.env</name>
        <value>HADOOP_MAPRED_HOME=/home/hadoop/hadoop-3.1.1</value>
    </property>

    <property>
        <name>mapreduce.map.env</name>
        <value>HADOOP_MAPRED_HOME=/home/hadoop/hadoop-3.1.1</value>
    </property>

    <property>
        <name>mapreduce.reduce.env</name>
        <value>HADOOP_MAPRED_HOME=/home/hadoop/hadoop-3.1.1</value>
    </property>

</configuration>

3.11.5 year-site.xml

<configuration>
<!-- Site specific YARN configuration properties -->
    <!-- 指定ResourceManager的地址 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>

    <!-- reducer取數據的方式是mapreduce_shuffle -->  
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
	
	<!-- 安裝zookeeper需要 --> 
	<!-- 指定zk集羣地址 --> 
    <property> 
        <name>yarn.resourcemanager.zk-address</name> 
        <value>slave1:2181,slave2:2181,slave3:2181</value> 
    </property>


</configuration>

3.11.6 修改workers

$ vi workers
# 添加如下內容
slave1
slave2
slave3

3.11.7 修改start-dfs.sh和 stop-dfs.sh文件

這兩個文件在/usr/local/hadoop/hadoop-3.1.1/sbin/中,分別在 start-dfs.shstop-dfs.sh 中添加如下內容

HDFS_JOURNALNODE_USER=root
HDFS_ZKFC_USER=hadoop

HDFS_DATANODE_USER=hadoop
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=hadoop
HDFS_SECONDARYNAMENODE_USER=hadoop

3.11.8 start-yarn.sh文件和 stop-yarn.sh文件

這兩個文件在 /usr/local/hadoop/hadoop-3.1.1/sbin/ 中,分別在 start-yarn.shstop-yarn.sh 中添加如下內容

YARN_RESOURCEMANAGER_USER=hadoop
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=hadoop

3.11.9 配hadoop的環境變量

$ vi ~/.bashrc
export HADOOP_HOME=/home/hadoop/hadoop-3.1.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

更新環境變量:source ~/.bashrc

3.11.10 分發hadoop到其他主機

上面的操作要在每一個節點上都同步,但是一個一個的去編輯太麻煩了,可以用scp命令,在 master 節點編輯好之後,直接發送給 slave 節點

scp -r /home/hadoop/hadoop-3.1.1 hadoop@slave1:/home/hadoop
scp -r ~/.bashrc hadoop@salve1:~/

後分別到其他節點更新環境變量source ~/.bashrc即可。到這,可以啓動hadoop,但我們到後面全安好後再啓動。

4. 安裝zookeeper(只在slave1/2/3三臺主機上安裝,以下在slave1上進行)

下載的版本爲穩定版3.5.5解壓至zookeeper文件夾

tar -zxvf apache-zookeeper-3.5.5-bin.tar.gz  -C  /home/hadoop/zookeeper

編輯環境變量:vi ~/.bashrc,添加下面的內容

#java 1.8
JAVA_HOME=/usr/local/java/jdk1.8.0_211
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

export HADOOP_HOME=/home/hadoop/hadoop-3.1.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
#新加
export ZOOKEEPER_HOME=/home/hadoop/zookeeper/apache-zookeeper-3.5.5
export PATH=.:$HADOOP_HOME/bin:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin:$PATH

更新環境變量:source ~/.bashrc

4.1 配置zoo.cfg

需要將 需要將 $ZOOKEEPER_HOME/conf 目錄下的zoo_sample.cfg重命名爲 zoo.cfg

cp $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg

默認爲:

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1


    tickTime: ZooKeeper 中使用的基本時間單元, 以毫秒爲單位, 默認值是 2000。它用來調節心跳和超時。例如, 默認的會話超時時間是兩倍的 tickTime。
    initLimit: 默認值是 10, 即 tickTime 屬性值的 10 倍。它用於配置允許 followers 連接並同步到 leader 的最大時間。如果 ZooKeeper 管理的數據量很大的話可以增加這個值。
    syncLimit: 默認值是 5, 即 tickTime 屬性值的 5 倍。它用於配置leader 和 followers 間進行心跳檢測的最大延遲時間。如果在設置的時間內 followers 無法與 leader 進行通信, 那麼 followers 將會被丟棄。
    dataDir: ZooKeeper 用來存儲內存數據庫快照的目錄, 並且除非指定其它目錄, 否則數據庫更新的事務日誌也將會存儲在該目錄下。建議配置 dataLogDir 參數來指定 ZooKeeper 事務日誌的存儲目錄。
    clientPort: 服務器監聽客戶端連接的端口, 也即客戶端嘗試連接的端口, 默認值是 2181。
    maxClientCnxns: 在 socket 級別限制單個客戶端與單臺服務器之前的併發連接數量, 可以通過 IP 地址來區分不同的客戶端。它用來防止某種類型的 DoS 攻擊, 包括文件描述符耗盡。默認值是 60。將其設置爲 0 將完全移除併發連接數的限制。
    autopurge.snapRetainCount: 配置 ZooKeeper 在自動清理的時候需要保留的數據文件快照的數量和對應的事務日誌文件, 默認值是 3
    autopurge.purgeInterval: 和參數 autopurge.snapRetainCount 配套使用, 用於配置 ZooKeeper 自動清理文件的頻率, 默認值是 1, 即默認開啓自動清理功能, 設置爲 0 則表示禁用自動清理功能。

修改爲:

ticketTime=2000
clientPort=2181
dataDir=/home/hadoop/zookeeper/apache-zookeeper-3.5.5/data
dataLogDir=/home/hadoop/zookeeper/apache-zookeeper-3.5.5/logs

initLimit=10
syncLimit=5

server.1=slave1:2888:3888
server.2=slave2:2888:3888
server.3=slave3:2888:3888

4.2 拷貝安裝目錄和環境變量到slave2/3服務器

scp .bashrc hadoop@slave2:~
scp -r /home/hadoop/zookeeper hadoop@slave2:/home/hadoop/

分別:source ~/.bashrc

4.3 在各自的安裝目錄下創建data文件夾,並生成myid在data文件夾中(三臺服務器對應1/2/3)

mkdir data
cd data
echo "1" > myid
# 在slave2中則:echo "2" > myid

4.4 zookeeper配置完畢

可以啓動,但等hbase安裝完再一次啓動

5. Hbase安裝(在master上進行)

5.1 解壓

下載版本:hbase2.0.0

tar -zvxf hbase-2.0.0-bin.tar.gz -C /home/hadoop

5.2 修改環境變量

vi ~/.bashrc 
# 添加
export HBASE_HOME=/home/hadoop/hbase-2.0.0
export PATH=$HBASE_HOME/bin:$PATH
#更新變量
source ~/.bashrc

5.3 修改配置

5.3.1 修改 hbase-2.0.1/conf目錄下的hbase-env.sh文件

export JAVA_HOME=/opt/jdk1.8.0_161
export HBASE_MANAGES_ZK=false

其中HBASE_MANAGES_ZK=false表示我們使用自己安裝zookeeper集羣而不是hbase自帶的zookeeper集羣

5.3.2 修改hbase-2.0.1/conf目錄下的hbase-site.xml文件

<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://master:9000/hbase</value>
    </property>
    <property>
  	<name>hbase.cluster.distributed</name>
  	<value>true</value>
    </property>
    <property>
   	<name>hbase.zookeeper.quorum</name>
  	<value>slave1,slave2,slave3</value>
    </property>
    <property>
    	<name>hbase.zookeeper.property.dataDir</name>
    	<value>/home/hadoop/zookeeper/apache-zookeeper-3.5.5/data</value>
    </property>
</configuration>

5.3.3 修改hbase-2.0.1/conf目錄下的regionservers

vi regionservers
# 將localhost刪除,修改爲附節點(注意一個節點佔一行)
slave1
slave2
slave3

5.3.4 分發至其他主機(slave1/2/3)

scp ~/.bashrc hadoop@slave2:~
scp -r  /home/hadoop/hbase-2.0.0 hadoop@slave1:/home/hadoop

分別更新:source ~/.bashrc

6. Spark安裝(在主節點Mater上)

6.1 下載

地址:https://archive.apache.org/dist/spark/spark-2.3.4/SparkR_2.3.4.tar.gz

解壓文件至目錄:/home/hadoop/spark-2.3.4-bin-hadoop2.7

6.2 安裝

6.2.1 編輯環境變量並添加 /etc/profile

#spark
export SPARK_HOME=/home/hadoop/spark-2.3.4-bin-hadoop2.7
export SPARK_CLASSPATH=$SPARK_HOME
export PATH=$PATH:$SPARK_HOME/bin

6.2.2 修改配置文件(安裝目錄的conf文件夾下)

spark-env.sh.template修改爲spark-env.sh

SPARK_LOCAL_IP=master                                 #本機ip或hostname
SPARK_MASTER_IP=master                                #master節點ip或hostname
export HADOOP_CONF_DIR=/home/hadoop/hadoop-3.1.2   #hadoop的配置路徑
export YARN_CONF_DIR=/home/hadoop/hadoop-3.1.2     #yarn路徑配置

slave.template修改爲slaves

slave1
slave2
slave3

6.2.3 分發安裝包和配置文件到slave節點

[hadoop@master ~]$ scp -r spark-2.3.4-bin-hadoop2.7 hadoop@slave1:/home/hadoop/
[hadoop@master ~]$ scp -r spark-2.3.4-bin-hadoop2.7 hadoop@slave2:/home/hadoop/
[hadoop@master ~]$ scp -r spark-2.3.4-bin-hadoop2.7 hadoop@slave3:/home/hadoop/

6.2.4 修改slave節點的在spark-env.shSPARK_LOCAL_IP選項

slave1:

SPARK_LOCAL_IP=slave1                                 #本機ip或hostname
SPARK_MASTER_IP=master                                #master節點ip或hostname
export HADOOP_CONF_DIR=/home/hadoop/hadoop-3.1.1   #hadoop的配置路徑
export YARN_CONF_DIR=/home/hadoop/hadoop-3.1.1     #yarn路徑配置

7. Phoenix安裝(在主節點master上)

7.1 下載

下載apache-phoenix-5.0.0-HBase-2.0-bin.tar.gz並解壓到/home/hadoop/apache-phoenix-5.0.0-HBase-2.0-bin

7.2 安裝

複製phoenix安裝目錄下的phoenix-core-5.0.0-HBase-2.0.jarhoenix-5.0.0-HBase-2.0-server.jar到hbase的lib目錄下

[root@master apache-phoenix-5.0.0-HBase-2.0-bin]# cp phoenix-core-5.0.0-HBase-2.0.jar phoenix-5.0.0-HBase-2.0-server.jar /home/hadoop/hbase-2.0.0/lib/

7.3 分發jar包到slave節點

scp phoenix-core-5.0.0-HBase-2.0.jar phoenix-5.0.0-HBase-2.0-server.jar hadoop@slave1:/home/hadoop/hbase-2.0.0/lib/

7.4 修改配置文件 hbase-site.xml

將hbase安裝目錄下的conf目錄下的hbase-site.xml複製到phoenix安裝目錄下的bin目錄中

cp hbase-site.xml /home/hadoop/app/apache-phoenix-5.0.0-HBase-2.0-bin/bin/

將hadoop安裝目錄下的etc/hadoop目錄下的 core-site.xmlhdfs-site.xml文件複製到phoenix安裝目錄下的bin目錄中

cp core-site.xml hdfs-site.xml /home/hadoop/app/apache-phoenix-5.0.0-HBase-2.0-bin/bin/

7.5 配置環境變量

vi /etc/profile

添加

#phoenix
export PHOENIX_HOME=/home/hadoop/apache-phoenix-5.0.0-HBase-2.0-bin
export PHOENIX_CLASSPATH=$PHOENIX_HOME
export PATH=$PATH:$PHOENIX_HOME/bin

7.6 測試能否運行

cd /home/hadoop/apache-phoenix-5.0.0-HBase-2.0-bin/bin/
./sqlline.py

運行結果:

[root@master bin]# ./sqlline.py 
Setting property: [incremental, false]
Setting property: [isolation, TRANSACTION_READ_COMMITTED]
issuing: !connect jdbc:phoenix: none none org.apache.phoenix.jdbc.PhoenixDriver
Connecting to jdbc:phoenix:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/hadoop/apache-phoenix-5.0.0-HBase-2.0-bin/phoenix-5.0.0-HBase-2.0-client.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/hadoop/hadoop-3.1.1/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
20/05/09 18:02:39 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Connected to: Phoenix (version 5.0)
Driver: PhoenixEmbeddedDriver (version 5.0)
Autocommit status: true
Transaction isolation: TRANSACTION_READ_COMMITTED
Building list of tables and columns for tab-completion (set fastconnect to true to skip)...
844/844 (100%) Done
Done
sqlline version 1.2.0
0: jdbc:phoenix:> 

8. 啓動

8.1 啓動

8.1.1 啓動 hadoop 之前在 master 上 format 名稱節點(namenode節點,只需要第一次啓動時進行)

cd /hadoop-3.1.1/bin
hdfs namenode -format

啓動:journalnode

hadoop-daemon.sh start journalnode

8.1.2 在master上開啓hadoopstart-all.sh

# master上的進程
[hadoop@master ryan]$ jps
5505 SecondaryNameNode
6373 Jps
5782 ResourceManager
5942 NodeManager
5083 NameNode
# slave上的
[hadoop@slave1 ~]$ jps
3718 DataNode
3853 NodeManager
4095 Jps

8.1.3 分別在slave1/2/3上開啓zookeeperzkServer.sh start

[hadoop@slave1 ~]$ zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper/apache-zookeeper-3.5.5/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[hadoop@slave1 ~]$ jps
4192 Jps
3718 DataNode
4150 QuorumPeerMain
3853 NodeManager

[hadoop@slave3 ~]$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper/apache-zookeeper-3.5.5/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower

8.1.4 在master啓動hbase:start-hbase.sh

[hadoop@master ryan]$ start-hbase.sh
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/hadoop/hbase-2.0.0/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/hadoop/hadoop-3.1.1/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
running master, logging to /home/hadoop/hbase-2.0.0/logs/hbase-hadoop-master-master.out
slave1: running regionserver, logging to /home/hadoop/hbase-2.0.0/logs/hbase-hadoop-regionserver-slave1.out
slave3: running regionserver, logging to /home/hadoop/hbase-2.0.0/logs/hbase-hadoop-regionserver-slave3.out
slave2: running regionserver, logging to /home/hadoop/hbase-2.0.0/logs/hbase-hadoop-regionserver-slave2.out


[hadoop@master ryan]$ jps
5505 SecondaryNameNode
6931 Jps
5782 ResourceManager
5942 NodeManager
5083 NameNode
6651 HMaster

[hadoop@slave1 ~]$ jps
4608 Jps
3718 DataNode
4150 QuorumPeerMain
3853 NodeManager
4303 HRegionServer

在master節點上啓動thrift2(dpdk上傳流量時使用)

 cd /home/hadoop/hbase-2.0.0/bin/
 ./hbase-daemon.sh start thrift2
 
 
 
 
[hadoop@master ryan]$ jps
6512 ThriftServer
5505 SecondaryNameNode
6931 Jps
5782 ResourceManager
5083 NameNode
6651 HMaster

8.1.5 在master上啓動spark:satrt-all.sh

cd /home/hadoop/app/spark-2.3.4-bin-hadoop2.7/sbin
./start-all.sh



[root@master bin]# jps
6512 ThriftServer
27843 HMaster
3527 SecondaryNameNode
3783 ResourceManager
1801 Jps
12346 Master
3278 NameNode


[root@slave1 zookeeper]# jps
18721 HRegionServer
2905 DataNode
8140 QuorumPeerMain
3021 NodeManager
12285 Jps
17374 Worker
6815 JournalNode

8.2 查看狀態:

http://master:9870/ hdfs http://master:16010 hbase

http://master:8080/ spark

8.3 其他

8.3.1 新增節點:

在新節點上啓動datanode $HADOOP_HOME/bin/hdfs --daemon start datanode 在新節點上啓動nodemanager $HADOOP_HOME/bin/yarn --daemon start nodemanager 查看hdfs各節點狀態 $HADOOP_HOME/bin/hdfs dfsadmin -report 查看yarn各節點狀態 $HADOOP_HOME/bin/yarn node -list

8.3.2 打開datanode後閃退

cat /home/hadoop/hadoop-3.1.1/datanode/current/VERSION

#Wed Jun 05 15:36:39 CST 2019
storageID=DS-0c9cc045-55a0-496d-ad1a-a21e80d03b77
clusterID=CID-21311f72-47dc-4949-b740-077ead1e4ba9
cTime=0
datanodeUuid=c7437eac-3009-4938-afe0-5db675e60a11
storageType=DATA_NODE
layoutVersion=-57

查看slave2的,發現不一樣,修改slave3 clusterID的,修改後可以查看節點
[hadoop@slave2 current]$ cat VERSION 
#Wed Jun 05 16:17:01 CST 2019
storageID=DS-c0f1af27-a2ae-4977-aa32-7b319cc76760
clusterID=CID-59aaa59c-e67a-4dee-99ff-d47361c52a52
cTime=0
datanodeUuid=a34dd4a0-3ac5-472e-ab75-fcac8f90a885
storageType=DATA_NODE
layoutVersion=-57

8.3.3 注意各個節點的配置保持一致

9. 重啓服務器後,再次啓動存在的問題

直接啓動:start-all.sh 查看:http://master:9870 啓動正常 slave1/2/3 啓動zookeeper zkServer.sh start(3臺都啓動後) 使用:zkServer.sh status 會有節點是follower,有的是leader 此時,再查看: 查看:http://master:9870 保持正常 start-hbase.sh(master) 查看:http://master:16010,無法打開網頁 使用jps查看進程: master上HMaster開啓失敗,slave上的HRegionServer開啓成功

查看日誌:

java.lang.IllegalStateException: 
	The procedure WAL relies on the ability to hsync for proper 
	operation during component failures, but the underlying filesystem does not support doing so. 
	Please check the config value of 'hbase.procedure.store.wal.use.hsync' to set the desired level
 	of robustness and ensure the config value of 'hbase.wal.dir' points to a FileSystem mount that
  	can provide it.

在master上修改: hbase-site.xml增加配置

<property>
	<name>hbase.unsafe.stream.capability.enforce</name>
	<value>false</value>
</property>

再次啓動: start-hbase.sh,查看jps 存在HMaster進程,網頁登陸:http://master:16010,成功啓動,問題解決,多查看日誌

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章