一、架構(gòu)
二叠骑、框架部署
2.1 準(zhǔn)備
準(zhǔn)備三臺虛擬機(jī),操作系統(tǒng)為CentOS 7.x削茁,每臺內(nèi)存至少8G以上宙枷。
步驟:
- 關(guān)閉防火墻
- 創(chuàng)建hxr用戶,設(shè)置密碼茧跋,創(chuàng)建文件夾更改用戶為hxr
- 配置ssh免密登錄
- 安裝jdk慰丛,設(shè)置環(huán)境變量
- 選擇上海時間,并通過ntp同步互聯(lián)網(wǎng)時間瘾杭,通過crontab指令同步集群服務(wù)器時間
2.1.1 關(guān)閉防火墻
關(guān)閉防火墻并停止開機(jī)自啟(CentOS7)
firewall-cmd --state # 查看防火墻狀態(tài)
systemctl start firewalld # 開啟防火墻
systemctl stop firewalld # 關(guān)閉防火墻
systemctl disable firewalld # 禁止防火墻開機(jī)啟動
systemctl enable firewalld # 設(shè)置防火墻開機(jī)啟動
2.1.2 創(chuàng)建hxr用戶
創(chuàng)建新用戶hxr
useradd hxr
設(shè)置密碼
passwd hxr
設(shè)置用戶權(quán)限
在/etc/sudoers文件中添加 hxr ALL=(ALL) NOPASSWD:ALL
表示該用戶或組執(zhí)行來自任何計算機(jī)的所有用戶和所有組的命令都不需要密碼璧帝。
執(zhí)行visudo -c
檢查文件是否正常
創(chuàng)建文件夾用于框架安裝
mkdir -p /opt/module /opt/software # 在/opt 目錄下創(chuàng)建兩個文件夾module和software
chown hxr:hxr /opt/module /opt/software #并將所有權(quán)給hxr
2.1.3 配置ssh免密登錄
登錄到hxr用戶,配置免密登陸富寿。
- 生成密鑰對
ssh-keygen -t rsa
- 發(fā)送公鑰到本機(jī)
將公鑰發(fā)送到user@host上睬隶,即可免密登陸該host節(jié)點。該命令會將公鑰寫到指定節(jié)點host的.ssh/authorized_keys文件中页徐,擁有該文件中的公鑰對應(yīng)私鑰的節(jié)點都允許遠(yuǎn)程登錄苏潜。
ssh-copy-id bigdata1
- 分別ssh登陸一下所有虛擬機(jī)
ssh bigdata2
ssh bigdata3
- 把/home/hxr/.ssh 文件夾發(fā)送到集群所有服務(wù)器
xsyncmy /home/hxr/.ssh
需要創(chuàng)建自定義xsyncmy腳本:見 [第四章 4.5 shell腳本],在/usr/bin目錄下創(chuàng)建腳本变勇。
2.1.4 安裝jdk恤左,設(shè)置環(huán)境變量
將JDK的安裝包放入到/opt/software文件夾下,通過如下命令將安裝包解壓到/opt/module文件夾下搀绣。
tar –zxvf [安裝包] -C [目標(biāo)路徑]
在/etc/profile.d文件夾中添加腳本env.sh (好處就是shell登錄和ssh登錄都會加載該環(huán)境變量)
# JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
2.1.5 節(jié)點間時間同步
選擇上海時間飞袋,并通過ntp同步互聯(lián)網(wǎng)時間,通過crontab指令同步集群服務(wù)器時間链患。
時間服務(wù)器配置
- 安裝ntp
yum –y install ntp
-
修改ntp配置文件 vim /etc/ntp.conf
-
修改1(授權(quán)192.168.1.0-192.168.32.255網(wǎng)段上的所有機(jī)器可以從這臺機(jī)器上查詢和同步時間)
#restrict 127.0.0.1 # 注銷語句 restrict 192.168.32.0 mask 255.255.255.0 nomodify notrap # 添加語句
-
修改2(集群在局域網(wǎng)中巧鸭,不使用其他互聯(lián)網(wǎng)上的時間)
#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 # 注銷語句
-
添加3(當(dāng)該節(jié)點丟失網(wǎng)絡(luò)連接,依然可以采用本地時間作為時間服務(wù)器為集群中的其他節(jié)點提供時間同步)
#將本機(jī)作為時鐘源 server 127.127.1.0 # 添加語句 fudge 127.127.1.0 stratum 10# 添加語句
-
-
修改ntpd配置文件 vim /etc/sysconfig/ntpd
增加內(nèi)容如下(讓硬件時間與系統(tǒng)時間一起同步)
# 讓硬件時間與系統(tǒng)時間一起同步 SYNC_HWCLOCK=yes
-
啟動ntpd服務(wù)
systemctl enable ntpd systemctl restart ntpd
- 選擇Shanghai時區(qū)作為節(jié)點時區(qū)
如果在/usr/share/zoneinfo/這個目錄下不存在時區(qū)配置文件Asia/Shanghai麻捻,就要用 tzselect 生成纲仍。
tzselect
拷貝該時區(qū)文件呀袱,覆蓋系統(tǒng)本地時區(qū)配置
rm /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
其他節(jié)點配置
安裝組件
sudo yum install -y ntpdate
在其他機(jī)器配置10分鐘與時間服務(wù)器同步一次
crontab -e
輸入如下文本后保存(設(shè)置每10秒同步一次)
*/10 * * * * /usr/sbin/ntpdate bigdata1
為了驗證時間同步是否生效,可以設(shè)置
date -s "2008-8-8 8:8:8"
修改時間郑叠,date觀察時間是否同步刚夺。
2.2 核心框架
Bigdata1 | Bigdata2 | Bigdata3 | |
---|---|---|---|
HDFS | NameNode<br />DataNode | DataNode | DataNode<br />SecondaryNameNode |
Yarn | NodeManager | Resourcemanager<br />NodeManager | NodeManager |
Zookeeper | QuorumPeerMain | QuorumPeerMain | QuorumPeerMain |
Flume | Application | Application | |
Kafka | Kafka | Kafka | Kafka |
Hive | RunJar<br />RunJar | ||
Sqoop | Sqoop | ||
Azkaban | AzkabanExecutorServer<br />AzkabanWebServer | ||
Hbase | HMaster<br />HRegionServer | HRegionServer | HRegionServer |
Flink | YarnSessionClusterEntrypoint<br />YarnTaskExecutorRunner | FlinkYarnSessionCli<br />YarnTaskExecutorRunner | YarnTaskExecutorRunner |
Clickhouse | |||
Atlas | Atlas | ||
Ganglia | ganglia | ||
Zabbix | zabbix-server<br />zabbix-agent | zabbix-agent | zabbix-agent |
Solr | jar | jar | jar |
MySQL | MySQL | ||
Spark-session | YarnCoarseGrainedExecutorBackend | YarnCoarseGrainedExecutorBackend | YarnCoarseGrainedExecutorBackend |
2.2.1 Hadoop 2.7.2
安裝應(yīng)用
將hadoop-2.7.2.tar.gz安裝包放入bigdata1節(jié)點的/opt/software文件夾下晕粪,通過如下命令將安裝包解壓到/opt/module文件夾下攒菠。
tar –zxvf hadoop-2.7.2.tar.gz -C /opt/module/
重命名解壓后的文件為hadoop-2.7.2
定義環(huán)境變量
修改/etc/profile.d/env.sh文件
# JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
# HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
#設(shè)置pid的存儲路徑亚情,避免tmp清理時將pid刪除,導(dǎo)致集群關(guān)閉腳本失效沸版。
export HADOOP_PID_DIR=${HADOOP_HOME}/pids
配置文件
在bigdata1節(jié)點上的 /opt/module/hadoop-2.7.2/etc/hadoop 路徑下修改如下配置文件
-
core-site.xml 添加如下配置
<!-- 指定HDFS中NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://bigdata1:9000</value> </property> <!-- 指定Hadoop運行時產(chǎn)生文件的存儲目錄 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.2/data/tmp</value> </property>
-
hdfs-site.xml 添加如下配置
<!-- 數(shù)據(jù)的副本數(shù)量 --> <property> <name>dfs.replication</name> <value>3</value> </property> <!-- 指定Hadoop輔助名稱節(jié)點主機(jī)配置 --> <property> <name>dfs.namenode.secondary.http-address</name> <value>bigdata3:50090</value> </property> <!-- 如果有多個掛載點婉宰,需要對其進(jìn)行配置--> <!-- <property> <name>dfs.datanode.data.dir</name> <value>file:///${hadoop.tmp.dir}/dfs/data1,file:///dev/dfs/data2</value> </property> -->
-
yarn-site.xml 添加如下配置
<!-- Reducer獲取數(shù)據(jù)的方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定YARN的ResourceManager的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>bigdata2</value> </property> <!-- 日志聚集功能使能 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 日志保留時間設(shè)置7天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property>
-
mapred-site.xml 添加如下配置
<!-- 資源調(diào)度器使用yarn --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!-- 歷史服務(wù)器端地址 --> <property> <name>mapreduce.jobhistory.address</name> <value>bigdata3:10020</value> </property> <!-- 歷史服務(wù)器web端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>bigdata3:19888</value> </property>
-
hadoop-env.sh 修改如下配置
export JAVA_HOME=${JAVA_HOME}
-
yarn-env.sh 修改如下配置
export JAVA_HOME=${JAVA_HOME}
-
mapred-env.sh 修改如下配置
export JAVA_HOME=${JAVA_HOME}
-
slaves 添加如下配置
bigdata1 bigdata2 bigdata3
注:需要注意不能出現(xiàn)空行,否則集群啟動會有問題
分發(fā)Hadoop到其他節(jié)點
xsyncmy /opt/module/hadoop-2.7.2
啟動集群
在bigdata1節(jié)點上格式化NameNode
bin/hdfs namenode –format
在bigdata1節(jié)點上啟動hdfs
sbin/start-dfs.sh
在bigdata2節(jié)點上啟動yarn
sbin/start-yarn.sh
在bigdata3節(jié)點上啟動歷史服務(wù)器
sbin/mr-jobhistory-daemon.sh start historyserver
或
mapred --daemon start historyserver
對hadoop集群的操作:
start-dfs.sh stop-dfs.sh 打開和關(guān)閉dfs
start-yarn.sh stop-yarn.sh 打開和關(guān)閉yarn
hadoop-deamon.sh start或stop namenode或datanode 在本機(jī)上操作后臺進(jìn)程
yarn-deamon.sh start或stop resourcemanager或nodemanager 在本機(jī)上操作進(jìn)程
hadoop-deamons.sh start或stop namenode或datanode 在集群上操作后臺進(jìn)程
yarn-deamons.sh start或stop resourcemanager或nodemanager 在集群上操作進(jìn)程
正常情況下各節(jié)點進(jìn)程如下
-
bigdata1:
NameNode
NodeManager
DataNode -
bigdata2:
ResourceManager
NodeManager
DataNode -
bigdata3:
Secondary NameNode
NodeManager
DataNode
JobHistoryServer
如果出現(xiàn)問題推穷,先停止所有hadoop進(jìn)程
sbin/stop-dfs.sh
sbin/stop-yarn.sh
對集群進(jìn)行格式化
rm –rf /opt/module/hadoop-2.7.2/data /opt/module/hadoop-2.7.2/logs # 刪除數(shù)據(jù)和日志文件
bin/hdfs namenode -format # 格式化集群
檢查配置文件等有無錯誤心包,找到并修復(fù)問題后重啟集群。
驗證集群是否正常工作
在/opt/module/hadoop-2.7.2目錄下執(zhí)行如下命令
hadoop fs –put README.txt / # 將需要進(jìn)行處理的文件上傳到集群中
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /README.txt /output # 調(diào)用hadoop自帶的wordcount程序?qū)ξ募械膯卧~進(jìn)行wordcount
hadoop fs –get /output /opt/module/hadoop-2.7.2 # 從集群中下載輸出的文件
查看下載下來的輸出文件是否正常馒铃,正常則集群可以正常工作蟹腾。
Web界面
bigdata1:50070 hdfs頁面
bigdata2:8088 yarn頁面
bigdata3:19888 歷史服務(wù)器頁面
hadoop的最終配置文件
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
<property>
<name>io.compression.codecs</name>
<value>
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.SnappyCodec,
com.hadoop.compression.lzo.LzoCodec,
com.hadoop.compression.lzo.LzopCodec
</value>
</property>
<property>
<name>io.compression.codecs.lzo.class</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
<property>
<name>hadoop.proxyuser.hxr.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hxr.hosts</name>
<value>*</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>bigdata3:50090</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>bigdata3:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>bigdata3:19888</value>
</property>
<!-- add chengwei 20210616 for add memory -->
<property>
<name>mapreduce.map.memory.mb</name>
<value>1536</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx1024M</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>3072</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx2560M</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata2</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
<description>是否啟動一個線程檢查每個任務(wù)正使用的物理內(nèi)存量,如果任務(wù)超出分配值区宇,則直接將其殺掉娃殖,默認(rèn)是true </description>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://bigdata3:19888/jobhistory/logs</value>
</property>
</configuration>
2.2.2 Zookeeper 3.4.10
安裝應(yīng)用
將zookeeper-3.4.10.tar.gz安裝包放入bigdata1節(jié)點的/opt/software文件夾下,通過如下命令將安裝包解壓到/opt/module文件夾下议谷。
tar –zxvf zookeeper-3.4.10.tar.gz -C /opt/module/
重命名解壓后的文件為zookeeper-3.4.10
配置文件
-
重命名/conf這個目錄下的zoo_sample.cfg為zoo.cfg
mv /opt/module/zookeeper-3.4.10/conf/zoo_sample.cfg /opt/module/zookeeper-3.4.10/conf/zoo.cfg
-
修改文件中的dataDir路徑
dataDir=/opt/module/zookeeper-3.4.10/zkData
-
新增如下
server.1=bigdata1:2888:3888 server.2=bigdata2:2888:3888 server.3=bigdata3:2888:3888
server.2是id號炉爆,只要不重復(fù)就可以。
-
-
在 /opt/module/zookeeper-3.4.10/ 目錄下創(chuàng)建zkData卧晓,在/opt/module/zookeeper-3.4.10/zkData目錄下創(chuàng)建myid的文件芬首,將本機(jī)的server號寫入
1
日志輸出位置
在bin/zkEnv.sh中的開頭添加一行
ZOO_LOG_DIR=/opt/module/zookeeper-3.4.10/logs
分發(fā)Zookeeper到其他節(jié)點
xsyncmy /opt/module/zookeeper-3.4.10
注意:需要修改其他節(jié)點的/opt/module/zookeeper-3.4.10/zkData/myid文件,為每個節(jié)點分配不同的server號(對應(yīng)server.1/server.2/server.3)逼裆。
啟動集群
在每個節(jié)點上啟動zookeeper進(jìn)程
bin/zkServer.sh start
檢查每個節(jié)點的狀態(tài)
bin/zkServer.sh status
關(guān)閉節(jié)點的zookeeper進(jìn)程
bin/zkServer.sh stop
2.2.3 Flume 1.7.0
安裝應(yīng)用
將apache-flume-1.7.0-bin.tar.gz安裝包放入bigdata1節(jié)點的/opt/software文件夾下郁稍,通過如下命令將安裝包解壓到/opt/module文件夾下。
tar –zxvf apache-flume-1.7.0-bin.tar.gz -C /opt/module/
重命名解壓后的文件為flume-1.7.0
配置文件
-
修改flume-1.7.0/conf中的flume-env.sh文件
export JAVA_HOME=${JAVA_HOME} export JAVA_OPTS="-Xms100m -Xmx2000m -Dcom.sun.management.jmxremote"
-Xms和-Xmx推薦設(shè)置為一樣大小胜宇,避免內(nèi)存抖動耀怜。
-
conf中的log4j.properties配置文件。
flume.log.dir=/opt/module/flume-1.7.0/logs # 指定輸出日志位置
log4j.root.logger指定了輸出模式桐愉,將flume.root.logger改了也就改了輸出模式财破。默認(rèn)輸出到log4j文件中,可以在配置文件中改為輸出到console中(INFO从诲,console)左痢。也可以在命令中加上-D參數(shù),將輸出目的地改為控制臺(-Dflume.root.logger=INFO,console)抖锥。
任務(wù)文件
針對不同的業(yè)務(wù)邏輯需要配置不同的文件。在啟動時作為需要作為配置參數(shù)傳入內(nèi)存碎罚。
例:創(chuàng)建/opt/module/flume-1.7.0/job/file-kafka-hdfs.conf文件
# agent
a1.sources = r1
a1.channels = c1 c2
#source
a1.sources.r1.type = TAILDIR
a1.sources.r1.channels = c1 c2
a1.sources.r1.positionFile = /opt/module/flume-1.7.0/taildir_position.json
a1.sources.r1.filegroups = f1
a1.sources.r1.filegroups.f1 = /tmp/logs/q6/.*log
a1.sources.r1.fileHeader = false
a1.sources.r1.maxBatchCount = 1000
#設(shè)置攔截器
a1.sources.r1.interceptors = i1 i2
a1.sources.r1.interceptors.i1.type = com.hxr.flume.LogETLInterceptor$Builder
a1.sources.r1.interceptors.i2.type = com.hxr.flume.LogTypeInterceptor$Builder
#設(shè)置選擇器
a1.sources.r1.selector.type = multiplexing
a1.sources.r1.selector.header = topic
a1.sources.r1.selector.mapping.Log_Q6 = c1
a1.sources.r1.selector.mapping.Log_E5 = c2
#channel
a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel
a1.channels.c1.kafka.bootstrap.servers = BigData1:9092,BigData2:9092,BigData3:9092
a1.channels.c1.kafka.topic = Log_Q6
a1.channels.c1.parseAsFlumeEvent = false
a1.channels.c2.type = org.apache.flume.channel.kafka.KafkaChannel
a1.channels.c2.kafka.bootstrap.servers = BigData1:9092,BigData2:9092,BigData3:9092
a1.channels.c2.kafka.topic = Log_E5
a1.channels.c2.parseAsFlumeEvent = false
#sink
a1.sinks = k1 k2
a1.sinks.k1.type = hdfs
a1.sinks.k1.channel = c1
a1.sinks.k1.hdfs.path = /origin_data/device_model_log/logs/q6/%Y-%m-%d
a1.sinks.k1.hdfs.filePrefix = q6-
a1.sinks.k1.hdfs.rollInterval = 3600
a1.sinks.k1.hdfs.rollSize = 134217728
a1.sinks.k1.hdfs.rollCount = 0
a1.sinks.k1.hdfs.useLocalTimeStamp = true
a1.sinks.k2.type = hdfs
a1.sinks.k2.channel = c2
a1.sinks.k2.hdfs.path = /origin_data/device_model_log/logs/e5/%Y-%m-%d
a1.sinks.k2.hdfs.filePrefix = e5-
a1.sinks.k2.hdfs.rollInterval = 3600
a1.sinks.k2.hdfs.rollSize = 134217728
a1.sinks.k2.hdfs.rollCount = 0
a1.sinks.k2.hdfs.useLocalTimeStamp = true
#壓縮格式
a1.sinks.k1.hdfs.codeC = lzop
a1.sinks.k1.hdfs.fileType = CompressedStream
a1.sinks.k2.hdfs.codeC = lzop
a1.sinks.k2.hdfs.fileType = CompressedStream
#拼裝
a1.sinks.k1.channel = c1
a1.sinks.k2.channel = c2
單點啟動
/opt/module/flume-1.7.0/bin/flume-ng agent -n a1 -c /opt/module/flume-1.7.0/conf -f /opt/module/flume-1.7.0/job/file-kafka-hdfs.conf
參數(shù)解釋
-n:任務(wù)名稱
-c:指定配置文件
-f:指定任務(wù)文件
2.2.4 Kafka 2.11
安裝應(yīng)用
將kafka_2.11-0.11.0.2.tgz安裝包放入bigdata1節(jié)點的/opt/software文件夾下磅废,通過如下命令將安裝包解壓到/opt/module文件夾下。
tar –zxvf kafka_2.11-0.11.0.2.tgz -C /opt/module/
重命名解壓后的文件為kafka-2.11
配置文件
修改kafka-2.11/config/server.properties文件
#broker的全局唯一編號荆烈,不能重復(fù)
broker.id=0
#刪除topic功能使能
delete.topic.enable=true #是否真正刪除topic
#kafka運行日志存放的路徑
log.dirs=/opt/module/kafka-2.11/logs
#配置連接Zookeeper集群地址
zookeeper.connect=bigdata1:2181,bigdata2:2181,bigdata3:2181 #所有的kafka相關(guān)節(jié)點 都會存儲在zookeeper的根目錄下拯勉,可以在后面加上節(jié)點名稱,將所有節(jié)點存儲在該節(jié)點下憔购。
真正刪除topic
找到要刪除的topic宫峦,執(zhí)行命令:rmr /brokers/topics/【topic name】即可,此時topic被徹底刪除玫鸟。被標(biāo)記為marked for deletion的topic可以在zookeeper客戶端中通過命令獲得:ls /admin/delete_topics/【topic name】导绷,如果你刪除了此處的topic,那么marked for deletion 標(biāo)記消失屎飘。
配置listener和advertised.listener
listeners學(xué)名叫監(jiān)聽器妥曲,就是tcp的偵聽ip∏展海可以在某個固定的ip上偵聽檐盟,也可以是全網(wǎng)段進(jìn)行偵聽(0.0.0.0)。如果是在某個固定ip上偵聽押桃,例如“127.0.0.1”葵萎,那么只有與該ip正確連接的客戶端能成功連接到kafka;而如果是全網(wǎng)段偵聽唱凯,那么可以與kafka所在機(jī)器的任意ip進(jìn)行連接并訪問kafka羡忘。
與kafka連接成功后,并不代表可以順利讀取和寫入數(shù)據(jù)磕昼。由于向topic的分區(qū)進(jìn)行生產(chǎn)消費壳坪,最終都要和分區(qū)的leader進(jìn)行交互。因此掰烟,獲取到元數(shù)據(jù)信息后爽蝴,客戶端(生產(chǎn)者或消費者)會和topic分區(qū)的leader所在的broker建立新的tcp連接以進(jìn)行后續(xù)的生產(chǎn)消費。
advertised.listeners配置的是kafka的broker ip纫骑,kafka成功注冊zookeeper后蝎亚,會將broker ip寫入到kafka中。這樣kafka集群中的每個節(jié)點都能知道其他所有節(jié)點的broker ip先馆。在沒有配置advertised.listeners的情況下发框,默認(rèn)取值為kafka所在機(jī)器的主機(jī)名,端口與listeners中配置的端口一致煤墙。也就是kafka的broker ip是kafka所在機(jī)器的主機(jī)名梅惯。很多情況下宪拥,與kafka連接成功但無法正確生產(chǎn)消費的原因就是kafka的主機(jī)名無法被正確解析,最常見的就是kafka的主機(jī)名為localhost铣减。
分發(fā)Kafka到其他節(jié)點
xsyncmy /opt/module/kafka-2.11
注意:需要修改其他節(jié)點的/opt/module/kafka-2.11/config/server.properties文件中的broker.id名她君,不能重復(fù)。
壓測
寫入消息
./kafka-producer-perf-test.sh --topic test --num-records 1000000 --record-size 1000 --throughput 20000 --producer-props bootstrap.servers=bigdata1:9092
--num-records 總共需要發(fā)送的消息數(shù)葫哗,本例為1000000
--record-size 每個記錄的字節(jié)數(shù)缔刹,本例為1000
--throughput 每秒鐘發(fā)送的記錄數(shù),本例為20000
消費消息
bin/kafka-consumer-perf-test.sh --zookeeper bigdata1:2181 --topic test --fetch-size 1048576 --messages 1000000 --threads 1
--fetch-size 指定每次fetch的數(shù)據(jù)的大小劣针,本例為1048576校镐,也就是1M
--messages 總共要消費的消息個數(shù),本例為1000000捺典,100w
啟動集群
bin/kafka-server-start.sh -daemon config/server.properties
bin/kafka-server-stop.sh
常用命令
對topic的增刪改查
-
查看所有的topic
bin/kafka-topics.sh --zookeeper bigdata1:2181 --list
-
創(chuàng)建一個名為first鸟廓,分區(qū)數(shù)為3,副本數(shù)為2的topic
bin/kafka-topics.sh --zookeeper bigdata1:2181 --create --topic first --partitions 3 --replication-factor 2
-
查看名為first的topic的具體參數(shù)
bin/kafka-topics.sh --zookeeper bigdata1:2181 --describe --topic first
分別表示topic名襟己、分區(qū)號肝箱、該分區(qū)leader所在的brokerid、副本號稀蟋、副本所在brokerid煌张、可以同步的副本所在的brokerid
-
修改分區(qū)數(shù)或副本數(shù)(分區(qū)數(shù)只能增不能減,副本數(shù)可增可減)
bin/kafka-topics.sh --zookeeper bigdata1:2181 --alter --topic first --partitions 5
在bigdata1的logs文件夾中可以查看該節(jié)點存儲的副本文件first-n(n表示分區(qū)號)退客。分區(qū)0存儲在broker0骏融、1上,分區(qū)2存儲在broker2萌狂、0上档玻,分區(qū)3存儲在broker0、2上茫藏、分區(qū)4存儲在broker1误趴、0上。綜上务傲,bigdata1存儲了分區(qū)0凉当、2、3售葡、4的副本看杭,與logs中的first副本文件對應(yīng)。
-
刪除topic
bin/kafka-topics.sh --zookeeper bigdata1:2181 --delete --topic first
如果在server.properties中將 delete.topic.enable=true挟伙,那么刪除時就會將原數(shù)據(jù)刪除楼雹。否則只會刪除zk上的節(jié)點,原數(shù)據(jù)不會刪除。
-
生產(chǎn)數(shù)據(jù)到topic中
bin/kafka-console-producer.sh --broker-list bigdata2:9092,bigdata3:9092 --topic first
-
從topic中讀取數(shù)據(jù)
bin/kafka-console-consumer.sh --bootstrap-server bigdata1:9092 --topic first [from-beginning]
可以指定消費組的offset贮缅,默認(rèn)是latest
-
展示當(dāng)前正在消費的消費者組的信息
bin/kafka-consumer-groups.sh --bootstrap-server bigdata1:9092 --list
-
監(jiān)控某一消費者消費了哪些topic(一個消費者組可以消費多個topic)
bin/kafka-consumer-groups.sh --bootstrap-server hadoop102:9092 --describe --group id
這兩個腳本直接從服務(wù)器上獲取元數(shù)據(jù)榨咐,得到leader的信息;底層也是調(diào)用生產(chǎn)者和消費者的api谴供。
不常用命令
-
如新增了節(jié)點块茁,需要重新分配分區(qū),將數(shù)據(jù)均衡憔鬼。資源消耗很大龟劲。
reassign-partitions.sh
-
每一個partition的leader的重新選舉胃夏。
preferred-replica-election.sh
將leader分布在不同節(jié)點上轴或,緩解壓力。一臺leader掛了仰禀,其他副本會成為leader照雁,可能會在同一個broker有多個leader,原leader上線后變成follower答恶,需要重新選舉饺蚊,將leader的分別變?yōu)榫鶆驙顟B(tài)(這兩個指令需要json格式的文件指定分配計劃)。
-
查看Kafka集群中節(jié)點是否正常
# 進(jìn)入zookeeper客戶端 bin/zkCli.sh # 查詢Kafka注冊的節(jié)點 ls /brokers/ids
2.2.5 Hive 2.3.6
安裝應(yīng)用
-
先在bigdata3上安裝MySQL
docker run -d --restart always --name mysql -p 3306:3306 -v /root/docker/mysql/conf:/etc/mysql -v /root/docker/mysql/log:/var/log/mysql -v /root/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=hxr mysql:5.6
-
將apache-hive-2.3.6-bin.tar.gz安裝包放入bigdata1節(jié)點的/opt/software文件夾下悬嗓,通過如下命令將安裝包解壓到/opt/module文件夾下污呼。
tar –zxvf apache-hive-2.3.6-bin.tar.gz -C /opt/module/
重命名解壓后的文件為hive-2.3.6。
配置文件
默認(rèn)配置文件為hive-default.xml包竹,用戶自定義配置文件為hive-site.xml
-
配置/opt/module/hive-2.3.6/conf/hive-env.sh文件
# 配置HADOOP_HOME路徑 export HADOOP_HOME=${HADOOP_HOME} # 配置HIVE_CONF_DIR路徑 export HIVE_CONF_DIR=/opt/module/hive-2.3.6/conf
-
新建hive-site.xml
配置hive-site.xml文件<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <!-- metastore連接數(shù)據(jù)庫配置 --> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://bigdata3:3306/metastore?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> <description>username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hxr</value> <description>password to use against metastore database</description> </property> <!-- 內(nèi)部表元數(shù)據(jù)存儲路徑 --> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> <description>location of default database for the warehouse(默認(rèn)default數(shù)據(jù)庫所在hdfs位置)</description> </property> <property> <name>hive.cli.print.header</name> <value>true</value> <description>顯示查詢的頭信息</description> </property> <property> <name>hive.cli.print.current.db</name> <value>true</value> <description>顯示當(dāng)前數(shù)據(jù)庫</description> </property> <!-- Hive元數(shù)據(jù)存儲版本的驗證 --> <property> <name>hive.metastore.schema.verification</name> <value>false</value> </property> <property> <name>datanucleus.schema.autoCreateAll</name> <value>true</value> </property> <!-- metastore所在節(jié)點配置 --> <property> <name>hive.metastore.uris</name> <value>thrift://bigdata1:9083</value> </property> </configuration>
Hive 運行日志信息配置
修改/opt/module/hive/conf/hive-log4j.properties.template文件名稱為hive-log4j.properties燕酷,修改 log 存放位置hive.log.dir=/opt/module/hive/logs
- beeline遠(yuǎn)程登陸配置
在hadoop的core-site.xml文件中配置代理用戶
<property>
<name>hadoop.proxyuser.hxr.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hxr.hosts</name>
<value>*</value>
</property>
在hive的hive-site.xml文件中配置遠(yuǎn)程鏈接地址端口和賬號密碼
<property>
<name>hive.server2.thrift.bind.host</name>
<value>bigdata1</value>
</property>
<!-- 指定hiveserver2連接的端口號 -->
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<!-- <property>
<name>hive.server2.thrift.client.user</name>
<value>hxr</value>
<description>Username to use against thrift client</description>
</property>
<property>
<name>hive.server2.thrift.client.password</name>
<value>hxr</value>
<description>Password to use against thrift client</description>
</property> -->
設(shè)置hiveserver2的啟動內(nèi)存大小
if [ "$SERVICE" = "hiveserver2" ]; then
echo $HADOOP_OPTS
export HADOOP_OPTS="$HADOOP_OPTS -XX:PermSize=2048M -XX:MaxPermSize=2048M"
echo $HADOOP_OPTS
fi
export HADOOP_HEAPSIZE=4096
雖然通過
ps -ef | grep 16481
查看啟動命令會顯示啟動jvm的內(nèi)存參數(shù)為-XX:PermSize=2048M -XX:MaxPermSize=2048M。但是查看該hiveserver2進(jìn)程的status文件周瞎,會發(fā)現(xiàn)實際分配的物理內(nèi)存是VmHWM: 4315028 kB(4G)苗缩。
測試
啟動metastore和hiveserver2
nohup ./hive --service metastore &
nohup ./hive --service hiveserver2 &
①本地連接
進(jìn)入hive客戶端
bin/hive
如果成功進(jìn)入,則hive運行正常声诸。
②beeline遠(yuǎn)程連接
beeline -u jdbc:hive2://bigdata1:10000 -n hxr
③可以通過DataGrip等數(shù)據(jù)庫管理工具遠(yuǎn)程連接
連接URL為 jdbc:hive2://192.168.32.242:10000
2.2.6 Sqoop 1.4.6
安裝應(yīng)用
將sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz安裝包放入bigdata1節(jié)點的/opt/software文件夾下酱讶,通過如下命令將安裝包解壓到/opt/module文件夾下。
tar –zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /opt/module/
重命名解壓后的文件為sqoop-1.4.6
配置文件
-
重命名sqoop-env-template.sh文件為sqoop-env.sh
mv /opt/module/sqoop-1.4.6/conf/sqoop-env-template.sh /opt/module/sqoop-1.4.6/conf/sqoop-env-template.shsqoop-env.sh
修改文件sqoop-env.sh
export HADOOP_COMMON_HOME=${HADOOP_HOME} export HADOOP_MAPRED_HOME=${HADOOP_HOME} # 以下配置可以不寫 export HIVE_HOME=/opt/module/hive-2.3.6 export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.10 export ZOOCFGDIR=/opt/module/zookeeper-3.4.10/conf export HBASE_HOME=/opt/module/hbase
-
拷貝JDBC驅(qū)動
將MySQL版本對應(yīng)的驅(qū)動程序解壓到/opt/module/sqoop-1.4.6/lib/ 目錄下彼乌。
tar -zxvf mysql-connector-java-5.1.27.tar.gz # 解壓驅(qū)動包 cp mysql-connector-java-5.1.27/mysql-connector-java-5.1.27-bin.jar /opt/module/sqoop-1.4.6/lib/ # 復(fù)制驅(qū)動包
測試
-
通過某一個command來驗證sqoop配置是否正確
bin/sqoop help
出現(xiàn)一些Warning警告泻肯,并伴隨著幫助命令的輸出。
-
測試Sqoop是否能夠成功連接數(shù)據(jù)庫
bin/sqoop list-databases --connect jdbc:mysql://bigdata3:3306/ --username root --password hxr
如果打印出mysql中的所有數(shù)據(jù)庫慰照,則運行正常软免。
需要預(yù)先在bigdata3節(jié)點上安裝完mysql
2.2.7 配置LZO格式壓縮
hadoop本身并不支持lzo壓縮,故需要使用twitter提供的hadoop-lzo開源組件焚挠。
配置
將編譯好后的hadoop-lzo-0.4.20.jar 放入hadoop-2.7.2/share/hadoop/common/
-
core-site.xml增加配置支持LZO壓縮
<property> <name>io.compression.codecs</name> <value> org.apache.hadoop.io.compress.GzipCodec, org.apache.hadoop.io.compress.DefaultCodec, org.apache.hadoop.io.compress.BZip2Codec, org.apache.hadoop.io.compress.SnappyCodec, com.hadoop.compression.lzo.LzoCodec, com.hadoop.compression.lzo.LzopCodec </value> </property> <property> <name>io.compression.codec.lzo.class</name> <value>com.hadoop.compression.lzo.LzoCodec</value> </property>
-
同步hadoop-lzo-0.4.20.jar 文件和core-site.xml文件
xsyncmy /opt/module/hadoop-2.7.2/share/hadoop/common/hadoop-lzo-0.4.20.jar /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml
重啟集群
sbin/start-dfs.sh
sbin/start-yarn.sh
測試
查看本地庫支持的
hadoop checknative -a
創(chuàng)建索引:LZO壓縮文件的可切片特性依賴于其索引膏萧,故我們需要手動為LZO壓縮文件創(chuàng)建索引。
hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/hadoop-lzo-0.4.20.jar com.hadoop.compression.lzo.DistributedLzoIndexer big_file.lzo
測試輸出使用lzop進(jìn)行壓縮
hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount -Dmapreduce.output.fileoutputformat.compress=true -Dmapreduce.output.fileoutputformat.compress.codec=com.hadoop.compression.lzo.LzopCodec /README.txt /outputlzo
2.2.8 TEZ 0.9.1
安裝應(yīng)用
將apache-tez-0.9.1-bin.tar.gz安裝包放入bigdata1節(jié)點的/opt/software文件夾下,通過如下命令將安裝包解壓到/opt/module文件夾下榛泛。
tar –zxvf apache-tez-0.9.1-bin.tar.gz -C /opt/module/
重命名解壓后的文件為tez-0.9.1
配置文件
-
需要在hive的hive-env.sh中引入tez的所有jar包蝌蹂。
# Set HADOOP_HOME to point to a specific hadoop install directoryHADOOP_HOME=${HADOOP_HOME} export HADOOP_HOME=$HADOOP_HOME # Hive Configuration Directory can be controlled by: export HIVE_CONF_DIR=$HIVE_HOME/conf # Folder containing extra libraries required for hive compilation/execution can be controlled by: # export HIVE_AUX_JARS_PATH= export TEZ_HOME=/opt/module/tez-0.9.1 export TEZ_JARS="" for jar in `ls $TEZ_HOME | grep jar`;do export TEZ_JARS=$TEZ_JARS:$TEZ_HOME/$jar done for jar in `ls $TEZ_HOME/lib`;do export TEZ_JARS=$TEZ_JARS:$TEZ_HOME/lib/$jar done export HIVE_AUX_JARS_PATH=$HADOOP_HOME/share/hadoop/common/hadoop-lzo-0.4.20.jar$TEZ_JARS
-
在hive-site.xml中設(shè)置引擎為tez。
<property> <name>hive.execution.engine</name> <value>tez</value> </property>
-
在Hive的/opt/module/hive/conf下面創(chuàng)建一個tez-site.xml文件曹锨,添加如下內(nèi)容
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xs1" href="configuration.xsl"?> <configuration> <property> <name>tez.lib.uris</name> <value>${fs.defaultFS}/tez/apache-tez-0.9.1-bin.tar.gz</value> </property> <property> <name>tez.use.cluster.hadoop-libs</name> <value>true</value> </property> <property> <name>tez.history.logging.service.class</name> <value>org.apache.tez.dag.history.logging.ats.ATSHistoryLoggingService</value> </property> </configuration>
-
將/opt/module/tez-0.9.1上傳到HDFS的/tez路徑孤个,使所有的hdfs節(jié)點都可以使用tez。
hadoop fs -mkdir /tez hadoop fs -put /opt/software/apache-tez-0.9.1-bin.tar.gz /tez hadoop fs -ls /tez
放置的路徑需要與tez-site.xml中配置的路徑對應(yīng)
如果是hadoop3.1.3版本沛简,可以下載Tez 0.10.1版本進(jìn)行配置.
測試
-
啟動Hive
nohup hive --service metastore 1>/dev/null 2>&1 & nohup hive --service hiveserver2 1>/dev/null 2>&1 & bin/hive
-
創(chuàng)建LZO表
hive (default)> create table student(id int,name string);
-
向表中插入數(shù)據(jù)
hive (default)> insert into student values(1,"zhangsan");
-
查詢數(shù)據(jù)齐鲤,如果沒有報錯就表示成功了
hive (default)> select * from student;
優(yōu)化
運行Tez時檢查到用過多內(nèi)存而被NodeManager殺死進(jìn)程問題:
Caused by: org.apache.tez.dag.api.SessionNotRunning: TezSession has already shutdown. Application application_1546781144082_0005 failed 2 times due to AM Container for appattempt_1546781144082_0005_000002 exited with exitCode: -103
For more detailed output, check application tracking page:http://hadoop103:8088/cluster/app/application_1546781144082_0005Then, click on links to logs of each attempt.
Diagnostics: Container [pid=11116,containerID=container_1546781144082_0005_02_000001] is running beyond virtual memory limits. Current usage: 216.3 MB of 1 GB physical memory used; 2.6 GB of 2.1 GB virtual memory used. Killing container.
這種問題是從機(jī)上運行的Container試圖使用過多的內(nèi)存,而被NodeManager kill掉了椒楣。
解決方法:
-
方案一:或者是關(guān)掉虛擬內(nèi)存檢查给郊。修改yarn-site.xml,修改后一定要分發(fā)捧灰,并重新啟動hadoop集群淆九。
<property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property>
-
方案二:mapred-site.xml中設(shè)置Map和Reduce任務(wù)的內(nèi)存配置如下(value中實際配置的內(nèi)存需要根據(jù)自己機(jī)器內(nèi)存大小及應(yīng)用情況進(jìn)行修改)
<property> <name>mapreduce.map.memory.mb</name> <value>1536</value> </property> <property> <name>mapreduce.map.java.opts</name> <value>-Xmx1024M</value> </property> <property> <name>mapreduce.reduce.memory.mb</name> <value>3072</value> </property> <property> <name>mapreduce.reduce.java.opts</name> <value>-Xmx2560M</value> </property>
2.2.9 Azkaban 2.5.0
應(yīng)用安裝
將azkaban-web-server-2.5.0.tar.gz,azkaban-executor-server-2.5.0.tar.gz毛俏,azkaban-sql-script-2.5.0.tar.gz 安裝包放入bigdata1節(jié)點的/opt/software文件夾下炭庙;
創(chuàng)建/opt/module/azkaban-2.5.0文件夾;
通過如下命令將安裝包解壓到/opt/module/azkaban-2.5.0文件夾下
tar –zxvf azkaban-web-server-2.5.0.tar.gz -C /opt/module/azkaban-2.5.0
tar –zxvf azkaban-executor-server-2.5.0.tar.gz -C /opt/module/azkaban-2.5.0
tar –zxvf azkaban-sql-script-2.5.0.tar.gz -C /opt/module/azkaban-2.5.0
重命名解壓后的文件夾
mv /opt/module/azkaban-2.5.0/azkaban-web-2.5.0/ /opt/module/azkaban-2.5.0/server
mv /opt/module/azkaban-2.5.0/azkaban-executor-2.5.0/ /opt/module/azkaban-2.5.0/executor
創(chuàng)建數(shù)據(jù)庫
mysql -uroot -phxr
mysql> create database azkaban;
mysql> use azkaban;
mysql> source /opt/module/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql
注:source后跟.sql文件煌寇,用于批量處理.sql文件中的sql語句焕蹄。
生成密鑰對和證書
Keytool是java數(shù)據(jù)證書的管理工具,使用戶能夠管理自己的公/私鑰對及相關(guān)證書阀溶。
-
生成 keystore的密碼及相應(yīng)信息的密鑰庫
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
-keystore 指定密鑰庫的名稱及位置(產(chǎn)生的各類信息將存在.keystore文件中)
-genkey(或者-genkeypair) 生成密鑰對
-alias 為生成的密鑰對指定別名腻脏,如果沒有默認(rèn)是mykey
-keyalg 指定密鑰的算法 RSA/DSA 默認(rèn)是DSA輸入完成后即生成秘鑰對,可以通過如下命令查看秘鑰庫中的秘鑰信息淌哟,有私鑰和證書(存有公鑰)迹卢。
keytool -keystore keystore -list
注意:
密鑰庫的密碼至少必須6個字符,可以是純數(shù)字或者字母或者數(shù)字和字母的組合等等
密鑰庫的密碼最好和<jetty> 的密鑰相同徒仓,方便記憶
-
將keystore 拷貝到 azkaban web服務(wù)器根目錄中
mv keystore /opt/module/azkaban-2.5.0/server/
配置文件
-
Web服務(wù)器配置腐碱,修改/opt/module/azkaban-2.5.0/server/conf/azkaban.properties文件
#Azkaban Personalization Settings #服務(wù)器UI名稱,用于服務(wù)器上方顯示的名字 azkaban.name=Test #描述 azkaban.label=My Local Azkaban #UI顏色 azkaban.color=#FF3601 azkaban.default.servlet.path=/index #默認(rèn)web server存放web文件的目錄 web.resource.dir=/opt/module/azkaban/server/web/ #默認(rèn)時區(qū),已改為亞洲/上海 默認(rèn)為美國 default.timezone.id=Asia/Shanghai #Azkaban UserManager class user.manager.class=azkaban.user.XmlUserManager #用戶權(quán)限管理默認(rèn)類(絕對路徑) user.manager.xml.file=/opt/module/azkaban/server/conf/azkaban-users.xml #Loader for projects #global配置文件所在位置(絕對路徑) executor.global.properties=/opt/module/azkaban/executor/conf/global.properties azkaban.project.dir=projects #數(shù)據(jù)庫類型 database.type=mysql #端口號 mysql.port=3306 #數(shù)據(jù)庫連接IP mysql.host=bigdata3 #數(shù)據(jù)庫實例名 mysql.database=azkaban #數(shù)據(jù)庫用戶名 mysql.user=root #數(shù)據(jù)庫密碼 mysql.password=hxr #最大連接數(shù) mysql.numconnections=100 # Velocity dev mode velocity.dev.mode=false # Azkaban Jetty server properties. # Jetty服務(wù)器屬性. #最大線程數(shù) jetty.maxThreads=25 #Jetty SSL端口 jetty.ssl.port=8443 #Jetty端口 jetty.port=8081 #SSL文件名(絕對路徑) jetty.keystore=/opt/module/azkaban/server/keystore #SSL文件密碼 jetty.password=000000 #Jetty主密碼與keystore文件相同 jetty.keypassword=000000 #SSL文件名(絕對路徑) jetty.truststore=/opt/module/azkaban/server/keystore #SSL文件密碼 jetty.trustpassword=000000 # Azkaban Executor settings executor.port=12321 # mail settings mail.sender= mail.host= job.failure.email= job.success.email= lockdown.create.projects=false cache.directory=cache
-
Web服務(wù)器用戶配置,修改/opt/module/azkaban-2.5.0/server/conf/azkaban-users.xml 文件掉弛,增加管理員用戶
<azkaban-users> <user username="azkaban" password="azkaban" roles="admin" groups="azkaban" /> <user username="metrics" password="metrics" roles="metrics"/> <user username="admin" password="admin" roles="admin,metrics"/> <role name="admin" permissions="ADMIN" /> <role name="metrics" permissions="METRICS"/> </azkaban-users>
-
執(zhí)行服務(wù)器配置症见,修改/opt/module/azkaban-2.5.0/executor/conf/azkaban.properties
#Azkaban #時區(qū) default.timezone.id=Asia/Shanghai # Azkaban JobTypes Plugins #jobtype 插件所在位置 azkaban.jobtype.plugin.dir=plugins/jobtypes #Loader for projects executor.global.properties=/opt/module/azkaban-2.5.0/executor/conf/global.properties azkaban.project.dir=projects database.type=mysql mysql.port=3306 mysql.host=bigdata3 mysql.database=azkaban mysql.user=root mysql.password=hxr mysql.numconnections=100 # Azkaban Executor settings #最大線程數(shù) executor.maxThreads=50 #端口號(如修改,請與web服務(wù)中一致) executor.port=12321 #線程數(shù) executor.flow.threads=30
單點啟動
-
啟動executor服務(wù)器
/opt/module/azkaban-2.5.0/executor/bin/azkaban-executor-start.sh
-
啟動web服務(wù)器
/opt/module/azkaban-2.5.0/server/bin/azkaban-web-start.sh
注意:先執(zhí)行executor,再執(zhí)行web殃饿,避免Web Server會因為找不到執(zhí)行器啟動失敗
Web界面
啟動完成后谋作,訪問https://bigdata1:8443,即可訪問azkaban服務(wù)了乎芳。
在登錄中輸入剛才在azkaban-users.xml文件中新添加的戶用名及密碼遵蚜,點擊 login帖池。
2.2.10 Flink 1.12.0
安裝應(yīng)用
將flink-1.12.0-bin-scala_2.12.tgz安裝包放入bigdata1節(jié)點的/opt/software文件夾下,通過如下命令將安裝包解壓到/opt/module文件夾下吭净。
tar –zxvf flink-1.12.0-bin-scala_2.12.tgz -C /opt/module/
重命名解壓后的文件為flink-1.12.0
分發(fā)Flink到其他節(jié)點
xsyncmy /opt/module/flink-1.12.0
啟動集群
必須保證hadoop集群正常運行睡汹。
-
添加環(huán)境變量
export HADOOP_CLASSPATH=`hadoop classpath`
-
啟動yarn-session
yarn-session.sh -n 2 -s 2 -jm 1024 -nm test -d
如果調(diào)度器中創(chuàng)建了多個隊列,需要指定隊列
nohup ./yarn-session.sh -s 2 -jm 1024 -tm 2048 -nm flink-on-yarn -qu flink -d 1>/opt/module/flink-1.12.0/yarn-session.log 2>/opt/module/flink-1.12.0/yarn-session.err &
-n(--container):TaskManager的數(shù)量(建議不指定寂殉,會動態(tài)添加囚巴,且flink1.10中已經(jīng)不再支持);
-s(--slots):每個TaskManager的slot數(shù)量友扰,默認(rèn)一個slot一個sore彤叉,默認(rèn)每個taskmanager的slot個數(shù)為1,有時可以多一些taskmanager村怪,做冗余秽浇;
-jm:JobManager的內(nèi)存(MB);
-tm:每個taskmanager的內(nèi)存(MB)实愚;
-nm:yarn的appName(yarn的ui上的名字)兼呵;
-d:后臺執(zhí)行兔辅。
-
關(guān)閉yarn-session
# 找到flink集群任務(wù)的id腊敲,然后kill yarn application -kill application_1616059084025_0002
-
提交任務(wù)(和standalone模式一樣)
bin/flink run -c com.iotmars.wecook.StreamWordCount -p 2 /opt/jar/flink-demo-0.0.1-SNAPSHOT-jar-with-dependencies.jar --host localhost --port 6666
- -c 表示類路徑
- -p 表示并行度
- 然后加上啟動jar路徑
- 最后添加參數(shù)
注意:如果slot不夠,會導(dǎo)致卡死在分配資源階段導(dǎo)致最后超時失敗维苔。
查看任務(wù)狀態(tài):去yarn控制臺查看任務(wù)狀態(tài)
取消yarn-session:yarn application --kill job_id
Web界面
可以通過http://192.168.32.243:37807訪問Web頁面(每次啟動都會變碰辅,具體查看/opt/module/flink-1.12.0/yarn-session.log)
2.2.11 HBase 1.3.1
安裝應(yīng)用
將hbase-1.3.1-bin.tar.gz安裝包放入bigdata1節(jié)點的/opt/software文件夾下,通過如下命令將安裝包解壓到/opt/module文件夾下介时。
tar –zxvf hbase-1.3.1-bin.tar.gz -C /opt/module/
重命名解壓后的文件為hbase-1.3.1
配置文件
-
修改conf/hbase-env.sh文件
export JAVA_HOME=/opt/module/jdk1.8.0_144 export HBASE_MANAGES_ZK=false
-
修改conf/hbase-site.sh文件
<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://bigdata1:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <!-- 0.98后的新變動没宾,之前版本沒有.port,默認(rèn)端口為60000 --> <property> <name>hbase.master.port</name> <value>16000</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>bigdata1,bigdata2,bigdata3</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/opt/module/zookeeper-3.4.10/zkData</value> </property> </configuration>
-
修改conf/regionservers文件
bigdata1 bigdata2 bigdata3
-
軟連接hadoop配置文件到hbase
ln -s /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml /opt/module/hbase/conf/core-site.xml ln -s /opt/module/hadoop-2.7.2/etc/hadoop/hdfs-site.xml /opt/module/hbase/conf/hdfs-site.xml
分發(fā)HBase到其他節(jié)點
xsyncmy /opt/module/hbase
啟動集群
必須保證zk和hadoop集群正常運行。
-
方式一:
bin/hbase-daemon.sh start master bin/hbase-daemon.sh start regionserver
-
方式二:
bin/start-hbase.sh bin/stop-hbase.sh
Web界面
2.2.12 Clickhouse
2.3 輔助框架
2.3.1 Ganglia
啟動應(yīng)用
需要先將容器中/etc/ganglia/文件夾下的配置文件復(fù)制出來沸柔,再啟動循衰。
docker run -d --name ganglia --net=host -v /root/ganglia/conf/:/etc/ganglia/ -v /root/ganglia/lib/:/var/lib/ganglia/ wookietreiber/ganglia
配置文件
修改gmond.conf
cluster {
name = "bigdata"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
udp_send_channel {
#bind_hostname = yes # Highly recommended, soon to be default.
# This option tells gmond to use a source address
# that resolves to the machine's hostname. Without
# this, the metrics may appear to come from any
# interface and the DNS names associated with
# those IPs will be used to create the RRDs.
#mcast_join = 239.2.11.71
# 192.168.32.243是bigdata2的ip
host = 192.168.32.243
port = 8649
ttl = 1
}
udp_recv_channel {
# mcast_join = 239.2.11.71
port = 8649
bind = 192.168.32.243
retry_bind = true
# Size of the UDP buffer. If you are handling lots of metrics you really
# should bump it up to e.g. 10MB or even higher.
# buffer = 10485760
}
修改gmeta.conf
data_source "bigdata" 192.168.32.243:8649
需要再flume配置文件flume-env.sh中添加如下參數(shù)將信息發(fā)送到ganglia的監(jiān)控端口,或直接在啟動flume時添加如下參數(shù):
JAVA_OPTS="-Dflume.monitoring.type=ganglia -Dflume.monitoring.hosts=192.168.32.243:8649 -Xms100m -Xmx200m"
訪問監(jiān)控UI:192.168.32.243/ganglia
2.3.2 Solr 5.2.1
安裝應(yīng)用
將solr-5.2.1.tgz安裝包放入bigdata1節(jié)點的/opt/software文件夾下褐澎,通過如下命令將安裝包解壓到/opt/module文件夾下会钝。
tar –zxvf solr-5.2.1.tgz -C /opt/module/
重命名解壓后的文件為solr-5.2.1
配置文件
進(jìn)入solr/bin目錄,修改solr.in.sh文件
ZK_HOST="hadoop102:2181,hadoop103:2181,hadoop104:2181"
SOLR_HOST="hadoop102"
# Sets the port Solr binds to, default is 8983
#可修改端口號
SOLR_PORT=8983
分發(fā)Solr到其他節(jié)點
xsyncmy /opt/module/solr-5.2.1
注:分發(fā)完成后工三,分別對bigdata2迁酸、bigdata3主機(jī)/opt/module/solr-5.2.1/bin下的solr.in.sh文件,修改為SOLR_HOST=對應(yīng)主機(jī)名俭正。
集群啟動
在三臺節(jié)點上分別啟動Solr奸鬓,這個就是Cloud模式
bin/solr start
Web界面
訪問8983端口,可指定三臺節(jié)點中的任意一臺IP
UI界面出現(xiàn)Cloud菜單欄時掸读,Solr的Cloud模式才算部署成功串远。
2.3.3 Atlas 0.8.4
需要提前安裝hadoop宏多,hive,zk澡罚,kafka绷落,hbase,solr
安裝應(yīng)用
將apache-atlas-0.8.4-bin.tar.gz安裝包放入bigdata1節(jié)點的/opt/software文件夾下始苇,通過如下命令將安裝包解壓到/opt/module文件夾下砌烁。
tar –zxvf apache-atlas-0.8.4-bin.tar.gz -C /opt/module/
重命名解壓后的文件為atlas-0.8.4
配置文件
Atlas集成Hbase
-
修改conf/atlas-application.properties
#修改atlas存儲數(shù)據(jù)主機(jī) atlas.graph.storage.hostname=bigdata1:2181,bigdata2:2181,bigdata3:2181
-
進(jìn)入到conf/hbase路徑,添加Hbase集群的配置文件到${Atlas_Home}
ln -s /opt/module/hbase/conf/ /opt/module/atlas/conf/hbase/
-
在/opt/module/atlas/conf/atlas-env.sh中添加HBASE_CONF_DIR
#添加HBase配置文件路徑 export HBASE_CONF_DIR=/opt/module/atlas/conf/hbase/conf
Atlas集成Solr
-
進(jìn)入/opt/module/atlas/conf目錄催式,修改配置文件atlas-application.properties
#修改如下配置 atlas.graph.index.search.solr.zookeeper-url=bigdata1:2181,bigdata2:2181,bigdata3:2181
-
將Atlas自帶的Solr文件夾拷貝到外部Solr集群的各個節(jié)點
cp -r /opt/module/atlas/conf/solr /opt/module/solr/
進(jìn)入到/opt/module/solr路徑函喉,修改拷貝過來的配置文件名稱為atlas_conf
mv solr atlas_conf
在Cloud模式下,啟動Solr(需要提前啟動Zookeeper集群)荣月,并創(chuàng)建collection
bin/solr create -c vertex_index -d /opt/module/solr/atlas_conf -shards 3 -replicationFactor 2
bin/solr create -c edge_index -d /opt/module/solr/atlas_conf -shards 3 -replicationFactor 2
bin/solr create -c fulltext_index -d /opt/module/solr/atlas_conf -shards 3 -replicationFactor 2
-shards 3:表示該集合分片數(shù)為3
-replicationFactor 2:表示每個分片數(shù)都有2個備份
vertex_index管呵、edge_index、fulltext_index:表示集合名稱
注意:如果需要刪除vertex_index哺窄、edge_index捐下、fulltext_index等collection可以執(zhí)行命令bin/solr delete -c ${collection_name}
。
Atlas集成Kafka
進(jìn)入/opt/module/atlas/conf/目錄萌业,修改配置文件atlas-application.properties
vim atlas-application.properties
######### Notification Configs #########
atlas.notification.embedded=false
atlas.kafka.zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181
atlas.kafka.bootstrap.servers=hadoop102:9092,hadoop103:9092,hadoop104:9092
atlas.kafka.zookeeper.session.timeout.ms=4000
atlas.kafka.zookeeper.connection.timeout.ms=2000
atlas.kafka.enable.auto.commit=true
啟動Kafka集群坷襟,并創(chuàng)建Topic
bin/kafka-topics.sh --zookeeper bigdata1:2181, bigdata2:2181, bigdata3:2181 --create --replication-factor 3 --partitions 3 --topic _HOATLASOK
bin/kafka-topics.sh --zookeeper bigdata1:2181, bigdata2:2181, bigdata3:2181 --create --replication-factor 3 --partitions 3 --topic ATLAS_ENTITIES
Atlas其他配置
進(jìn)入/opt/module/atlas/conf/目錄,修改配置文件atlas-application.properties
vim atlas-application.properties
######### Server Properties #########
atlas.rest.address=http://bigdata1:21000
# If enabled and set to true, this will run setup steps when the server starts
atlas.server.run.setup.on.start=false
######### Entity Audit Configs #########
atlas.audit.hbase.zookeeper.quorum=bigdata1:2181,bigdata2:2181,bigdata3:2181
vim atlas-log4j.xml
#去掉如下代碼的注釋
<appender name="perf_appender" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="${atlas.log.dir}/atlas_perf.log" />
<param name="datePattern" value="'.'yyyy-MM-dd" />
<param name="append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d|%t|%m%n" />
</layout>
</appender>
<logger name="org.apache.atlas.perf" additivity="false">
<level value="debug" />
<appender-ref ref="perf_appender" />
</logger>
Atlas集成Hive
進(jìn)入/opt/module/atlas/conf/目錄生年,修改配置文件atlas-application.properties
vim atlas-application.properties
######### Hive Hook Configs #######
atlas.hook.hive.synchronous=false
atlas.hook.hive.numRetries=3
atlas.hook.hive.queueSize=10000
atlas.cluster.name=primary
將atlas-application.properties配置文件加入到atlas-plugin-classloader-1.0.0.jar中
zip -u /opt/module/atlas/hook/hive/atlas-plugin-classloader-0.8.4.jar /opt/module/atlas/conf/atlas-application.properties
cp /opt/module/atlas/conf/atlas-application.properties /opt/module/hive/conf/
原因:這個配置不能參照官網(wǎng)婴程,將配置文件考到hive的conf中。參考官網(wǎng)的做法一直讀取不到atlas-application.properties配置文件抱婉,看了源碼發(fā)現(xiàn)是在classpath讀取的這個配置文件档叔,所以將它壓到j(luò)ar里面。
在/opt/module/hive/conf/hive-site.xml文件中設(shè)置Atlas hook
vim hive-site.xml
<property>
<name>hive.exec.post.hooks</name>
<value>org.apache.atlas.hive.hook.HiveHook</value>
</property>
修改hive的hive-env.sh文件
#在tez引擎依賴的jar包后面追加hive插件相關(guān)jar包
export HIVE_AUX_JARS_PATH=/opt/module/hadoop-2.7.2/share/hadoop/common/hadoop-lzo-0.4.20.jar$TEZ_JARS,/opt/module/atlas/hook/hive/atlas-plugin-classloader-0.8.4.jar,/opt/module/atlas/hook/hive/hive-bridge-shim-0.8.4.jar
單點啟動
bin/atlas_stop.py
bin/atlas_start.py
Web界面
訪問地址:http://bigdata1:21000
錯誤信息查看路徑:/opt/module/atlas/logs/*.out和application.log
賬戶:admin
密碼:admin
測試
登錄solr web控制臺:http://hadoop102:8983/solr/#/~cloud 看到如下圖顯示
2.3.4 Zabbix 4.2.8
安裝應(yīng)用
-
每臺安裝yum的repo文件
sudo rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
-
將文件中的鏡像域名替換為阿里云
sudo sed -i 's/http:\/\/repo.zabbix.com/https:\/\/mirrors.aliyun.com\/zabbix/g' /etc/yum.repos.d/zabbix.repo
-
安裝
-
bigdata1:
sudo yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent
-
bigdata2和bigdata3
bigdata2: sudo yum install -y zabbix-agent bigdata3: sudo yum install -y zabbix-agent
-
-
MySQL創(chuàng)建數(shù)據(jù)庫
mysql -h 192.168.32.244 -uroot -phxr -e"create database zabbix charset utf8 collate utf8_bin";
使用zabbix的建表腳本建表
zcat /usr/share/doc/zabbix-server-mysql-4.0.29/create.sql.gz | mysql -h 192.168.32.244 -uroot -phxr zabbix
-
配置Zabbix_Server
在bigdata1中的/etc/zabbix/zabbix_server.conf配置文件中添加DBHost=bigdata3 DBName=zabbix DBUser=root DBPassword=hxr
在所有節(jié)點的/etc/zabbix/zabbix_server.conf配置文件中修改
# 修改 Server=bigdata1 # 注銷 # ServerActive=127.0.0.1 # Hostname=Zabbix server
-
配置Zabbix Web時區(qū)
在/etc/httpd/conf.d/zabbix.conf文件中添加php_value date.timezone Asia/Shanghai
-
啟動Zabbix
-
bigdata1啟動:
sudo systemctl start/stop zabbix-server zabbix-agent httpd (httpd是訪問html等頁面的入口)
bigdata1設(shè)置開機(jī)自啟:
sudo systemctl enable/disable zabbix-server zabbix-agent httpd
-
bigdata2/3啟動:
sudo systemctl start/stop zabbix-agent
設(shè)置開機(jī)自啟:
sudo systemctl enable/disable zabbix-agent
-
訪問頁面
http://192.168.32.242/zabbix
在頁面中完成對Zabbix_Web的數(shù)據(jù)庫等配置
如果配置出現(xiàn)錯誤蒸绩,可以在配置文件/etc/zabbix/web/zabbix.conf.php中進(jìn)行修改
異常日志可以查看 cat /var/log/zabbix/zabbix_server.log配置主機(jī)
在配置-> 主機(jī)-> 創(chuàng)建主機(jī) 中添加需要監(jiān)控的主機(jī)-
配置監(jiān)控項
創(chuàng)建完主機(jī)后衙四,點擊監(jiān)控項進(jìn)行監(jiān)控項的創(chuàng)建
如監(jiān)控datanode進(jìn)行是否正常運行
-
配置觸發(fā)器
點擊觸發(fā)器進(jìn)行創(chuàng)建
-
通知方式設(shè)置
在管理-> 報警媒介類型 中進(jìn)行通知報警的配置
-
創(chuàng)建動作
在配置-> 動作中創(chuàng)建動作,為觸發(fā)器設(shè)置動作(發(fā)郵件)患亿。
-
為用戶配置郵箱
在用戶的基本資料中配置
-
使用模版為每個節(jié)點進(jìn)行配置
默認(rèn)有很多框架的模板可以選擇传蹈,如MySQL、redis等窍育。但是沒有hadoop的模板卡睦,需要自己配置。
在配置-> 模板 中進(jìn)行模板配置漱抓,創(chuàng)建監(jiān)控項表锻、觸發(fā)器,然后應(yīng)用到主機(jī)上。
注意需要修改動作來為模板的觸發(fā)器綁定動作戳玫。
四错沃、附
4.1 UI界面
192.168.32.242:50070 192.168.32.243:8088
192.168.32.242:8443 azkaban(admin:admin)
http://192.168.32.243/ganglia ganglia(監(jiān)控flume)
192.168.32.242:16010 hbase 192.168.32.242:8983 solr 192.168.32.242:21000 atlas(admin:admin)
192.168.32.244:38682 flink(每次啟動都會變暖释,具體查看/opt/module/flink-1.12.0/yarn-session.log)
http://192.168.32.242/zabbix Zabbbix(Admin:zabbix,報警郵箱792965772@qq.com)
http://192.168.101.179:6080 Ranger界面(admin/bigdata123)
http://192.168.101.180:9090 Prometheus界面
http://192.168.101.180:3000 Grafana界面 (admin/admin)
http://192.168.101.180:9363/metrics Prometheus監(jiān)控上報數(shù)據(jù)
頁面 | 地址 | 說明 |
---|---|---|
hdfs頁面 | 192.168.32.242:50070 | |
yarn頁面 | 192.168.32.243:8088 | |
azkaban頁面 | 192.168.32.242:8443 | admin:admin |
flume監(jiān)控頁面 | http://192.168.32.243/ganglia | |
flink | 192.168.32.244:38682 | 每次啟動都會變拨与,具體查看/opt/module/flink-1.12.0/yarn-session.log |
Zabbbix | http://192.168.32.242/zabbix | Admin:zabbix忆蚀,報警郵箱792965772@qq.com |
hbase頁面 | 192.168.32.242:16010 | |
solr頁面 | 192.168.32.242:8983 | |
Atlas頁面 | 192.168.32.242:21000 | admin:admin |
4.2 啟動命令
組件 | 命令 | 說明 |
---|---|---|
hdfs | start-dfs.sh | bigdata1節(jié)點上執(zhí)行 |
yarn | start-yarn.sh | bigdata2節(jié)點上執(zhí)行 |
historyjob | mr-jobhistory-daemon.sh start historyserver | bigdata3節(jié)點上執(zhí)行 |
hive | nohup ./hive --service metastore &; nohup ./hive --service hiveserver2 &; | bigdata1節(jié)點上hive/bin目錄下執(zhí)行 |
zookeeper | zk-server.sh start | bigdata1節(jié)點上執(zhí)行 |
kafka | kafka-server.sh start | bigdata1節(jié)點上執(zhí)行 |
flink集群 | export HADOOP_CLASSPATH=hadoop classpath ; nohup ./yarn-session.sh -s 2 -jm 1024 -tm 2048 -nm flink-on-yarn -qu flink -d 1>/opt/module/flink-1.12.0/yarn-session.log 2>/opt/module/flink-1.12.0/yarn-session.err &; |
bigdata1節(jié)點上的flink/bin目錄下執(zhí)行 |
sqoop | 在腳本中調(diào)用 | |
azkaban | server/bin/azkaban-web-start.sh; executor/bin/azkaban-executor-start.sh; | bigdata1節(jié)點上的azkaban目錄下執(zhí)行 |
ganglia | docker start ganglia | bigdata2節(jié)點上執(zhí)行 |
zabbix | bigdata1節(jié)點上 sudo systemctl start/stop zabbix-server zabbix-agent httpd ; bigdata2/3節(jié)點上 sudo systemctl start/stop zabbix-agent ; |
|
hbase | bin/start-hbase.sh | bigdata1節(jié)點上hbase目錄下執(zhí)行 |
solr | solr.sh start | bigdata1節(jié)點上執(zhí)行 |
atlas | bin/atlas_start.py | bigdata1節(jié)點上執(zhí)行 |
Prometheus | nohup ./prometheus --web.enable-lifecycle --config.file=prometheus.yml > ./prometheus.log 2>&1 & | bigdata2節(jié)點上的Prometheus目錄下執(zhí)行 |
Grafana | nohup ./bin/grafana-server web > ./grafana.log 2>&1 & | bigdata2節(jié)點上的Grafana目錄下執(zhí)行 |
4.3 各jps進(jìn)程名對應(yīng)的組件
組件 | 進(jìn)程名 | 說明 |
---|---|---|
HDFS | NameNode SecondaryNameNode DataNode | |
Yarn | ResourceManager NodeManager JobHistoryServer ApplicationHistoryServer(timelineserver) | |
Zookeeper | QuorumPeerMain | |
Kafka | Kafka | |
Flume | Application | |
Hive(hiveserver2/metastore) | RunJar | |
Azkaban | AzkabanExecutorServer AzkabanWebServer | |
Sqoop | Sqoop | |
Flink(standalone) | TaskManagerRunner StandaloneSessionClusterEntrypoint | |
Flink(yarn-session) | FlinkYarnSessionCli YarnSessionClusterEntrypoint(為FlinkJobManager) YarnTaskExecutorRunner | |
Hbase | HMaster HRegionServer | |
Solr | jar | |
Atlas | Atlas | |
Ranger Admin | EmbeddedServer | |
RangerUsersync | UnixAuthenticationService | |
Spark-session | SparkSubmit,ApplicationMaster,YarnCoarseGrainedExecutorBackend |
4.4 常用端口號
組件 | 端口號 | 說明 |
---|---|---|
Hadoop | 50070:hdfs.namenode.http-address: 50075:Hdfs.datanode.http-address 50090:SecondaryNameNode輔助名稱節(jié)點端口號 50010:Hdfs.datanode.address 8088:Yarn.resourcemanager.webapp.address 19888:歷史服務(wù)器web訪問端口 8020:namenode節(jié)點active狀態(tài)下的端口號 9000端口:fileSystem默認(rèn)的端口號 8032:resourcemanager(jobtracker)的服務(wù)端口號 | |
Zookeeper | 2181:zookeeper的端口號 2888:zookeeper之間通訊的端口 3888:zookeeper推選leader的端口 8485:journalnode默認(rèn)的端口號 | |
Kafka | 9092:kafka端口號 8086:Kafka Monitor的訪問網(wǎng)址(可在啟動腳本中指定) 9000:Kafka Manager的訪問網(wǎng)址根蟹,默認(rèn)是9000蕾域,與namenode端口沖突拷肌,bin/kafka-manager -Dhttp.port=9090 | |
Flume | 41414:flume監(jiān)控的端口 | |
Hive | 9083:hive元數(shù)據(jù)metastore的端口號(Presto需要讀取hive的元數(shù)據(jù)庫) 10000:hive2端口 | |
Azkaban | 8443:所指定的jetty服務(wù)器的web端口 8081:通訊端口 | |
Oozie | 11000:Oozie 的web端口號 | |
Sqoop | ||
Flink | 8081:Flink的standalone模式Web端口號 6123:Flink的jobmanager和taskmanager內(nèi)部通信端口 37807:Flink的yarn-session模式Web端口號 | |
Spark | 7077:spark的standalone的master端口 4040:local模式spark的driver的web 8080:standalone模式spark的master的web 8088:client模式的web端口 18080:spark的historyserver的web | |
Hbase | 16010:HBASE的web端口號 16000:HBase的master的通訊端口 16020:regionserver的端口號 16030:regionserver的web端口 | |
Solr | 8983:solr | |
Atlas | 21000:Atlas | |
Clickhouse | 9000:TCP端口,Clickhouse client 默認(rèn)連接端口旨巷; 8123:Http端口 | |
Kettle | 8080:kettlemaster節(jié)點 8081:kettleslave1節(jié)點 8082:kettleslave2節(jié)點 | |
即系查詢框架 | 7070:kylin的web端口 8881:presto的httpserver(即coordinator的端口) 9095: imply的web端口(druid的ui) 21000:impala端口 25010:impala日志網(wǎng)頁端口 | |
數(shù)據(jù)庫 | 3306:MySQL 1521:Orical 27017:MongoDB | |
Redis | 6379 | |
ELK | 9300:elasticsearch官方客戶端連接巨缘、內(nèi)部通訊端口 9200:elasticsearch集群、控制臺和http訪問端口 5601:kibana服務(wù)端口 | |
Zabbix | 10051:Zabbix_Server通訊端口 | |
Prometheus | 9090:prometheus 9100:node-productor 9104:mysqld-exporter 3000:Grafana | |
平臺 | 7180:CDM 8080:HDP 8888:hue未優(yōu)化采呐,8889:hue優(yōu)化 |
4.5 shell腳本
xsyncmy:文件分發(fā)腳本
#!/bin/bash
if [ $# -lt 1 ]
then
echo "----- 未進(jìn)行傳參 -----"
exit
fi
for file in $@
do
if [ -e $file ]
then
DIRNAME=`cd $(dirname ${file});pwd`
BASENAME=`basename ${file}`
USER=`whoami`
for host in bigdata2 bigdata3
do
echo ----- 文件 $DIRNAME/$BASENAME 傳輸?shù)?{host} -----
rsync -av ${DIRNAME}/${BASENAME} ${USER}@${host}:${DIRNAME}
done
else
echo ----- ${file}文件不存在 -----
fi
done
jps-server.sh:查看3個節(jié)點jps進(jìn)程腳本
#!/bin/bash
#jps腳本
for host in bigdata1 bigdata2 bigdata3
do
echo ----- ${host} -----
ssh ${host} "jps | grep -iv jps"
done
zk-server.sh:zookeeper集群的 啟動/關(guān)閉/狀態(tài)檢查 腳本
#!/bin/bash
#zk啟動/停止腳本
case $1 in
"start")
echo ----- 開啟zookeeper集群 -----
for host in bigdata1 bigdata2 bigdata3
do
ssh ${host} "/opt/module/zookeeper-3.4.10/bin/zkServer.sh start"
done
;;
"stop")
echo ----- 關(guān)閉zookeeper集群 -----
for host in bigdata1 bigdata2 bigdata3
do
ssh ${host} "/opt/module/zookeeper-3.4.10/bin/zkServer.sh stop"
done
;;
"status")
echo ----- 查看zookeeper集群狀態(tài) -----
for host in bigdata1 bigdata2 bigdata3
do
ssh ${host} "/opt/module/zookeeper-3.4.10/bin/zkServer.sh status"
done
;;
esac
kafka-server.sh (-deamon 效果同 nohup xxx 1>/dev/null 2>1 &):Kafka集群的 啟動/關(guān)閉腳本
#!/bin/bash
case $1 in
"start")
for host in bigdata1 bigdata2 bigdata3
do
ssh ${host} "source /etc/profile ; export JMX_PORT=9988 ; nohup /opt/module/kafka-2.11/bin/kafka-server-start.sh /opt/module/kafka-2.11/config/server.properties 1>/dev/null 2>&1 &"
if [ $? -eq 0 ]
then
echo ----- ${host} kafka啟動成功 -----
fi
done
;;
"stop")
for host in bigdata1 bigdata2 bigdata3
do
ssh ${host} "source /etc/profile ; /opt/module/kafka-2.11/bin/kafka-server-stop.sh"
if [ $? -eq 0 ]
then
echo ----- ${host} kafka關(guān)閉成功 -----
fi
done
;;
esac
flume-server.sh:Flume的 啟動/關(guān)閉腳本
#!/bin/bash
case $1 in
"start")
for host in bigdata1 #bigdata2
do
# ssh ${host} "source /etc/profile ; nohup /opt/module/flume-1.7.0/bin/flume-ng agent -n a1 -c /opt/module/flume-1.7.0/conf -f /opt/module/flume-1.7.0/job/file-kafka-hdfs.conf 1>/dev/null 2>&1 &"
#ssh ${host} "source /etc/profile ; nohup /opt/module/flume-1.7.0/bin/flume-ng agent -n a1 -c /opt/module/flume-1.7.0/conf -f /opt/module/flume-1.7.0/job/log-kafka.conf 1>/dev/null 2>&1 &"
ssh bigdata1 "source /etc/profile ; nohup /opt/module/flume-1.7.0/bin/flume-ng agent -n a1 -c /opt/module/flume-1.7.0/conf -f /opt/module/flume-1.7.0/job/log-kafka.conf 1>/dev/null 2>&1 &"
#ssh ${host} "source /etc/profile ; nohup /opt/module/flume-1.7.0/bin/flume-ng agent -n a2 -c /opt/module/flume-1.7.0/conf -f /opt/module/flume-1.7.0/job/kafka-hdfs.conf 1>/dev/null 2>&1 &"
ssh bigdata2 "source /etc/profile ; nohup /opt/module/flume-1.7.0/bin/flume-ng agent -n a2 -c /opt/module/flume-1.7.0/conf -f /opt/module/flume-1.7.0/job/kafka-hdfs.conf 1>/dev/null 2>&1 &"
if [ $? -eq 0 ]
then
echo ----- ${host} flume啟動成功 -----
fi
done
;;
"stop")
for host in bigdata1 #bigdata2
do
ssh ${host} "source /etc/profile ; ps -ef | awk -F \" \" '/log-kafka.conf/ && !/awk/{print \$2}' | xargs kill "
ssh ${host} "source /etc/profile ; ps -ef | awk -F \" \" '/kafka-hdfs.conf/ && !/awk/{print \$2}' | xargs kill "
if [ $? -eq 0 ]
then
echo ----- ${host} flume關(guān)閉成功 -----
fi
done
;;
esac
solr-server.sh :Solr的 啟動/關(guān)閉腳本
#!/bin/bash
case $1 in
"start"){
for i in bigdata1 bigdata2 bigdata3
do
ssh $i "/opt/module/solr-5.2.1/bin/solr start"
done
};;
"stop"){
for i in bigdata1 bigdata2 bigdata3
do
ssh $i "/opt/module/solr-5.2.1/bin/solr stop"
done
};;
esac
azkaban-3.84.4 腳本
#!/bin/bash
start-web(){
ssh bigdata2 'cd /opt/module/azkaban-3.84.4/web/;bin/shutdown-web.sh'
}
stop-web(){
ssh bigdata2 'cd /opt/module/azkaban-3.84.4/web/;bin/shutdown-web.sh'
}
start-exec(){
for host in bigdata1 bigdata2 bigdata3;do
(ssh ${host} 'cd /opt/module/azkaban-3.84.4/exec/;bin/start-exec.sh')&
done
wait
}
stop-exec(){
for host in bigdata1 bigdata2 bigdata3;do
(ssh ${host} 'cd /opt/module/azkaban-3.84.4/exec/;bin/shutdown-exec.sh')&
done
wait
}
activate-exec(){
for host in bigdata1 bigdata2 bigdata3;do
ssh ${host} curl -G "${host}:12321/executor?action=activate" && echo
done
}
case $1 in
"start-web")
start-web
;;
"stop-web")
stop-web
;;
"start-exec")
start-exec
;;
"stop-exec")
stop-exec
;;
"activate-exec")
activate-exec
;;
"start")
start-exec
sleep 2
activate-exec
if [ "$?" -ne "0" ];then
stop-exec
fi
sleep 1
start-web
;;
"stop")
stop-web
stop-exec
;;
esac
4.6 其他
如果hdfs遇到權(quán)限問題是因為/根目錄用戶為hxr若锁,兩種解決方式①hadoop dfs -chmod -R 777 / 將根目錄開放給其他用戶②在操作時用hxr用戶,-DHADOOP_USER_NAME=hxr
hdfs dfsadmin -safemode leave 如果進(jìn)入安全模式斧吐,可以通過該命令離開
hadoop checknative -a 查看本地庫支持