一、準備
1.1 系統及軟件版本
- ubuntu 20.04
- jdk1.8.0_151
- hadoop-3.2.4
- apache-zookeeper-3.6.3-bin
- hbase-2.4.13
- phoenix-hbase-2.4-5.1.2-bin
- kafka_2.12-2.8.1
- kafka-eagle-bin-1.4.8
1.2 軟件包拷貝
可將上述軟件包拷貝到/opt
目錄下
1.3 SSH 設置
1.3.1 設置ssh可以通過root用戶登陸
設置root用戶密碼
sudo passwd
設置允許ssh以root用戶登陸
# 先安裝ssh-server
sudo apt install openssh-server
# 修改sshd_config配置
sudo sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
重啓ssh服務,使配置生效
sudo service ssh restart
1.3.2 SSH無密碼登陸 (在master主機進行如下操作)
切換到root用戶(注:之後所有操作均以root用戶執行)
sudo su
用rsa生成密鑰,一路回車。
ssh-keygen -t rsa
把公鑰複製一份,並改名爲authorized_keys
cd /root/.ssh
cp id_rsa.pub authorized_keys
1.4 JDK安裝
解壓
cd /opt
tar xavf ./jdk-8u151-linux-x64.tar.gz
建立軟連接
cd /usr/local
ln -s /opt/jdk1.8.0_151 java
將JDK環境變量配置到/etc/profile中(注:如果不好使也可以配置到 /root/.bashrc中)
export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin
檢查JDK是否配置好
source /etc/profile
javac -version
提示 javac 1.8.0_151
代表JDK安裝完成
1.5 修改主機名和host
注意:需要有root權限
修改主機名爲:single
# 修改hostname文件,變改主機名爲"single"
echo "single" > /etc/hostname
修改hosts,明確主機名對應的ip地址,假設當前ip爲 192.168.100.123
# 修改hosts文件,追加一條記錄"
echo "192.168.100.123 single" >> /etc/hosts
重啓主機生效。
1.5 創建數據相關目錄
# 創建bigdata目錄,後邊各組件讓數據都會放在這個目錄下
mkdir -p /home/bigdata
# 給權限
chmod 777 /home/bigdata
二、Hadoop搭建
2.1 Hadoop安裝
解壓 ,並在/home/bigdata/hadoop目錄下創建tmp。然後在/usr/local目錄下創建對應的軟鏈接。
注意:需要將這些目錄放到空間大的盤下(e.g. /home),避免應爲硬盤空間不足引發錯誤
可通過
df -h
命令查看各分區大小
# 解壓
cd /opt
tar xavf ./hadoop-3.2.4.tar.gz
# 創建對應目錄
mkdir -p /home/bigdata/hadoop/tmp
# 創建軟鏈接
cd /usr/local/
ln -s /opt/hadoop-3.1.3 hadoop
2.2 Hadoop配置
以下操作都在
/usr/local/hadoop/etc/hadoop
下進行
2.2.1 hadoop-env.sh
# 修改JAVA_HOME配置項爲JDK安裝目錄
export JAVA_HOME=/usr/local/java
# 設置HADOOP根目錄
export HADOOP_HOME=/usr/local/hadoop
# 設置HADOOP本地庫,主要是給hbase提供壓縮算法用
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"
# 修改日誌級別,避免長期跑日誌文件太多問題
# 注意:測試發現只有這一個有用,別的都不好使
export HADOOP_DAEMON_ROOT_LOGGER=WARN,console
2.2.2 core-site.xml
hadoop.tmp.dir : hadoop集羣在工作的時候存儲的一些臨時文件的目錄
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://single:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/bigdata/hadoop/tmp</value>
</property>
</configuration>
2.2.3 hdfs-site.xml
dfs.replication:hdfs的副本數設置。也就是上傳一個文件,其分割爲block塊後,每個block的冗餘副本個數,這裏設置爲1。
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
2.2.4 mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>single:9001</value>
</property>
</configuration>
2.25 workers
設置運行節點爲當前主機(名)
single
2.3 Hadoop啓動
2.3.1 啓動前先設置一下環境變量,避免啓動遇到各種問題
在/etc/profile
最後,追加如下內容:
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
2.3.2 格式化一個新的文件系統
注意:第一次搭建的時候格式化一次就好!!不要重複format
cd /usr/local/hadoop/bin
./hadoop namenode -format
2.3.2 啓動HDFS
cd /usr/local/hadoop/sbin
# 啓動
./start-all.sh
# 停止
#./stop-all.sh
通過jps檢查是否啓動成功
$ jps
23968 NodeManager
23553 DataNode
23874 ResourceManager
23715 SecondaryNameNode
23429 NameNode
三、ZOOKEEPER搭建
3.1 ZooKeeper安裝
解壓,在/usr/local下創建軟鏈接
# 解壓
cd /opt
tar xavf ./apache-zookeeper-3.6.3-bin.tar.gz
# 創建軟鏈接
cd /usr/local
ln -s /opt/apache-zookeeper-3.6.3-bin zookeeper
# 創建數據目錄
mkdir -p /home/bigdata/zookeeper
3.2 ZooKeeper配置
3.2.1 zoo.cfg
調試用,使用默認配置即可
cp zoo_sample.cfg zoo.cfg
修改 zoo.cfg
:
dataDir=/home/bigdata/zookeeper
3.2.2 啓動
bin/zkServer.sh start
四、HBASE搭建
4.1 HBase安裝
解壓,創建軟鏈接
# 解壓
cd /opt
tar xavf ./hbase-2.4.13-bin.tar.gz
# 創建軟鏈接
cd /usr/local
ln -s /opt/hbase-2.4.13 hbase
# 創建數據目錄
mkdir -p /home/bigdata/hbase/tmp
4.2 HBase配置
以下配置文件在/usr/local/hbase/conf目錄下
4.2.1 hbase-env.sh
#修改JAVA_HOME配置項爲JDK安裝目錄
export JAVA_HOME=/usr/local/java
# 不使用hbase自帶的zookeeper
export HBASE_MANAGES_ZK=false
4.2.2 hbase-site.xml
hbase.rootdir: HBase集羣中所有RegionServer共享目錄,用來持久化HBase的數據,一般設置的是hdfs的文件目錄
hbase.zookerper.quorum: zookooper 服務啓動的節點,只能爲奇數個
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- HBase集羣中所有RegionServer共享目錄,用來持久化HBase的數據,一般設置的是hdfs的文件目錄 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://single:9000/hbase</value>
</property>
<!-- zookeeper集羣的URL配置,多個host中間用逗號(,)分割-->
<property>
<name>hbase.zookeeper.quorum</name>
<value>single</value>
</property>
<!-- 本地文件系統tmp目錄,一般配置成local模式的設置一下-->
<property>
<name>hbase.tmp.dir</name>
<value>/home/bigdata/hbase/tmp</value>
</property>
<!-- true表示使用外部的zk-->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 這裏配置phoenix,目的是方便使用sql語句 -->
<property>
<name>phoenix.schema.isNamespaceMappingEnabled</name>
<value>true</value>
</property>
<!--如果你打算在本地文件系統中跑hbase,請禁掉此項 -->
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
<!-- 嘗試解決regionserver exception問題 -->
<property>
<name>hbase.thrift.maxWorkerThreads</name>
<value>10000</value>
</property>
<property>
<name>hbase.thrift.maxQueuedRequests</name>
<value>10000</value>
</property>
<property>
<name>hbase.regionserver.executor.openregion.threads</name>
<value>10000</value>
</property>
<!-- 調優測試-->
<property>
<name>hbase.hregion.memstore.block.multiplier</name>
<value>5</value>
</property>
<property>
<name>hbase.hregion.memstore.flush.size</name>
<value>268435456</value>
</property>
<property>
<name>hbase.regionserver.global.memstore.size</name>
<value>0.4</value>
</property>
<property>
<name>hbase.regionserver.global.memstore.size.lower.limit</name>
<value>0.625</value>
</property>
<property>
<name>hbase.hregion.compacting.memstore.type</name>
<value>BASIC</value>
</property>
<!-- 添加索引需要添加該配置 -->
<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>
<!-- 集羣傳輸的字節指標,值較小時,會增加並行計算,但也增加客戶端合併塊的數量。 -->
<property>
<name>phoenix.stats.guidepost.width</name>
<value>52428800</value>
</property>
<!-- 開啓phoenix的schema與hbase的命名空間的映射
注:開啓後,若要創建含有schema的表,需先創建相應的schema,否則會報錯 -->
<property>
<name>phoenix.schema.mapSystemTablesToNamespace</name>
<value>true</value>
</property>
<!-- 開啓phoenix的最大緩存配置 -->
<property>
<name>phoenix.mutate.batchSize</name>
<value>5000000</value>
</property>
<property>
<name>phoenix.mutate.maxSize</name>
<value>50000000</value>
</property>
<property>
<name>phoenix.mutate.maxSizeBytes</name>
<value>1048576000</value>
</property>
</configuration>
4.2.3 regionservers
設置regionserver爲當前主機名
single
4.2.4 PHOENIX 配置
從phoenix官網下載與hbase對應的phoenix按轉包,因爲當前hbase版本爲2.4.13,所以選擇phoenix-hbase-2.4-5.1.2-bin版本
# 切換目錄
cd /opt
# 下載phoenix
wget https://dlcdn.apache.org/phoenix/phoenix-5.1.2/phoenix-hbase-2.4-5.1.2-bin.tar.gz
# 下載完成後,解壓
tar xavf phoenix-hbase-2.4-5.1.2-bin.tar.gz
# 切換phoenix目錄
cd phoenix-hbase-2.4-5.1.2-bin
# 將phoenix相關jar包拷貝到hbase的libs目錄下即可
cp phoenix-pherf-5.1.2.jar phoenix-server-hbase-2.4-5.1.2.jar /opt/hbase-2.4.13/lib/
如果先要使用phoenix命令行phoenix-hbase-2.4-5.1.2-bin/bin/sqlline.py
, 還需要將hbase-site.xml
文件拷貝到phoenix的bin目錄中
cp /opt/hbase-2.4.13/conf/hbase-site.xml /opt/phoenix-hbase-2.4-5.1.2-bin/bin
拷貝完成後,就可以調用 sqlline.py
連hbase了
4.3 啓動HBase
cd /usr/local/hbase/bin
./start-hbase.sh
通過jps
查看,如果有HMaster
,HRegionServer
,則啓動成功
五、KAFKA搭建
6.1 Kafka安裝
解壓,在/usr/local下創建軟連接
# 解壓
cd /opt
tar xavf ./kafka_2.12-2.8.1.tgz
# 創建軟連接
cd /usr/local
ln -s /opt/kafka_2.12-2.8.1 kafka
6.2 Kafka配置
修改 server.properties
listeners=PLAINTEXT://single:9092
advertised.listeners=PLAINTEXT://single:9092
6.3 運行
後臺啓動
cd /usr/local/kafka
nohup bin/kafka-server-start.sh config/server.properties > kafka-run.log 2>&1 &
關閉kafka
cd /usr/local/kafka
./bin/kafka-server-stop.sh