大數(shù)據(jù)框架安裝教程

一、架構(gòu)

二叠骑、框架部署

2.1 準(zhǔn)備

準(zhǔn)備三臺虛擬機(jī),操作系統(tǒng)為CentOS 7.x削茁,每臺內(nèi)存至少8G以上宙枷。

步驟:

  1. 關(guān)閉防火墻
  2. 創(chuàng)建hxr用戶,設(shè)置密碼茧跋,創(chuàng)建文件夾更改用戶為hxr
  3. 配置ssh免密登錄
  4. 安裝jdk慰丛,設(shè)置環(huán)境變量
  5. 選擇上海時間,并通過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用戶,配置免密登陸富寿。

  1. 生成密鑰對
ssh-keygen -t rsa
  1. 發(fā)送公鑰到本機(jī)
    將公鑰發(fā)送到user@host上睬隶,即可免密登陸該host節(jié)點。該命令會將公鑰寫到指定節(jié)點host的.ssh/authorized_keys文件中页徐,擁有該文件中的公鑰對應(yīng)私鑰的節(jié)點都允許遠(yuǎn)程登錄苏潜。
ssh-copy-id bigdata1
  1. 分別ssh登陸一下所有虛擬機(jī)
ssh bigdata2
ssh bigdata3
  1. 把/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ù)器配置

  1. 安裝ntp
yum –y install ntp
  1. 修改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# 添加語句
      
  2. 修改ntpd配置文件 vim /etc/sysconfig/ntpd

    增加內(nèi)容如下(讓硬件時間與系統(tǒng)時間一起同步)

    # 讓硬件時間與系統(tǒng)時間一起同步
    SYNC_HWCLOCK=yes
    
  1. 啟動ntpd服務(wù)

    systemctl enable ntpd
    systemctl restart ntpd
    
  1. 選擇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

配置文件

  1. 重命名/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ù)就可以。

  2. 在 /opt/module/zookeeper-3.4.10/ 目錄下創(chuàng)建zkData卧晓,在/opt/module/zookeeper-3.4.10/zkData目錄下創(chuàng)建myid的文件芬首,將本機(jī)的server號寫入

    1
    
  3. 日志輸出位置
    在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

配置文件

  1. 修改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)存抖動耀怜。

  2. 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


    image.png
  • 修改分區(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)。

    image.png
    image.png
  • 刪除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
    
    image.png
  • 監(jiān)控某一消費者消費了哪些topic(一個消費者組可以消費多個topic)

    bin/kafka-consumer-groups.sh  --bootstrap-server hadoop102:9092  --describe  --group id
    
    image.png

    這兩個腳本直接從服務(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)用

  1. 先在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
    
  1. 將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

  1. 配置/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
    
  2. 新建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&amp;useSSL=false&amp;useUnicode=true&amp;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

  1. 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

配置文件

  1. 重命名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
    
  2. 拷貝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ū)動包
    

測試

  1. 通過某一個command來驗證sqoop配置是否正確

    bin/sqoop help
    

    出現(xiàn)一些Warning警告泻肯,并伴隨著幫助命令的輸出。

  2. 測試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開源組件焚挠。

配置

  1. 將編譯好后的hadoop-lzo-0.4.20.jar 放入hadoop-2.7.2/share/hadoop/common/

  2. 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>
    
  3. 同步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

配置文件

  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
    
  2. 在hive-site.xml中設(shè)置引擎為tez。

        <property>
            <name>hive.execution.engine</name>
            <value>tez</value>
        </property>
    
  3. 在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>
    
  4. 將/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)行配置.

測試

  1. 啟動Hive

    nohup hive --service metastore 1>/dev/null 2>&1 &
    nohup hive --service hiveserver2 1>/dev/null 2>&1 &
    
    bin/hive
    
  2. 創(chuàng)建LZO表

    hive (default)> create table student(id int,name string);
    
  3. 向表中插入數(shù)據(jù)

    hive (default)> insert into student values(1,"zhangsan");
    
  4. 查詢數(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)證書阀溶。

  1. 生成 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> 的密鑰相同徒仓,方便記憶

  1. 將keystore 拷貝到 azkaban web服務(wù)器根目錄中

    mv keystore /opt/module/azkaban-2.5.0/server/
    

配置文件

  1. 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
    
  2. 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>
    
  3. 執(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集群正常運行睡汹。

  1. 添加環(huán)境變量

    export HADOOP_CLASSPATH=`hadoop classpath`
    
  2. 啟動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í)行兔辅。

  1. 關(guān)閉yarn-session

    # 找到flink集群任務(wù)的id腊敲,然后kill
    yarn application -kill application_1616059084025_0002
    
  1. 提交任務(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

配置文件

  1. 修改conf/hbase-env.sh文件

    export JAVA_HOME=/opt/module/jdk1.8.0_144
    export HBASE_MANAGES_ZK=false
    
  2. 修改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>
    
  1. 修改conf/regionservers文件

    bigdata1
    bigdata2
    bigdata3
    
  2. 軟連接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界面

http://bigdata1:16010

2.2.12 Clickhouse

ClickHouse 21.7 基礎(chǔ)

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

http://bigdata1:8983/solr/

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

  1. 修改conf/atlas-application.properties

    #修改atlas存儲數(shù)據(jù)主機(jī)
    atlas.graph.storage.hostname=bigdata1:2181,bigdata2:2181,bigdata3:2181
    
  2. 進(jìn)入到conf/hbase路徑,添加Hbase集群的配置文件到${Atlas_Home}

    ln -s /opt/module/hbase/conf/ /opt/module/atlas/conf/hbase/
    
  3. 在/opt/module/atlas/conf/atlas-env.sh中添加HBASE_CONF_DIR

    #添加HBase配置文件路徑
    export HBASE_CONF_DIR=/opt/module/atlas/conf/hbase/conf
    

Atlas集成Solr

  1. 進(jìn)入/opt/module/atlas/conf目錄催式,修改配置文件atlas-application.properties

    #修改如下配置
    atlas.graph.index.search.solr.zookeeper-url=bigdata1:2181,bigdata2:2181,bigdata3:2181
    
  2. 將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 看到如下圖顯示

21580557-6dc93d42eb0cf7d0.png

2.3.4 Zabbix 4.2.8

安裝應(yīng)用

  1. 每臺安裝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
    
  2. 將文件中的鏡像域名替換為阿里云

    sudo sed -i 's/http:\/\/repo.zabbix.com/https:\/\/mirrors.aliyun.com\/zabbix/g' /etc/yum.repos.d/zabbix.repo
    
  3. 安裝

    • 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
      
  4. 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
    
  5. 配置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
    
  6. 配置Zabbix Web時區(qū)
    在/etc/httpd/conf.d/zabbix.conf文件中添加

    php_value date.timezone Asia/Shanghai
    
  1. 啟動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
      
  1. 訪問頁面
    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

  2. 配置主機(jī)
    在配置-> 主機(jī)-> 創(chuàng)建主機(jī) 中添加需要監(jiān)控的主機(jī)

  3. 配置監(jiān)控項
    創(chuàng)建完主機(jī)后衙四,點擊監(jiān)控項進(jìn)行監(jiān)控項的創(chuàng)建
    如監(jiān)控datanode進(jìn)行是否正常運行


    image.png
  4. 配置觸發(fā)器
    點擊觸發(fā)器進(jìn)行創(chuàng)建


    image.png
  5. 通知方式設(shè)置
    在管理-> 報警媒介類型 中進(jìn)行通知報警的配置


    image.png
  6. 創(chuàng)建動作
    在配置-> 動作中創(chuàng)建動作,為觸發(fā)器設(shè)置動作(發(fā)郵件)患亿。


    image.png
image.png
  1. 為用戶配置郵箱
    在用戶的基本資料中配置


    image.png
  2. 使用模版為每個節(jié)點進(jìn)行配置
    默認(rèn)有很多框架的模板可以選擇传蹈,如MySQL、redis等窍育。但是沒有hadoop的模板卡睦,需要自己配置。
    在配置-> 模板 中進(jìn)行模板配置漱抓,創(chuàng)建監(jiān)控項表锻、觸發(fā)器,然后應(yīng)用到主機(jī)上。


    image.png

    注意需要修改動作來為模板的觸發(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 其他

  1. 如果hdfs遇到權(quán)限問題是因為/根目錄用戶為hxr若锁,兩種解決方式①hadoop dfs -chmod -R 777 / 將根目錄開放給其他用戶②在操作時用hxr用戶,-DHADOOP_USER_NAME=hxr

  2. hdfs dfsadmin -safemode leave 如果進(jìn)入安全模式斧吐,可以通過該命令離開

  3. hadoop checknative -a 查看本地庫支持

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載又固,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末煤率,一起剝皮案震驚了整個濱河市仰冠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌涕侈,老刑警劉巖沪停,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件煤辨,死亡現(xiàn)場離奇詭異裳涛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)众辨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門端三,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鹃彻,你說我怎么就攤上這事郊闯。” “怎么了蛛株?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵团赁,是天一觀的道長。 經(jīng)常有香客問我谨履,道長欢摄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任笋粟,我火速辦了婚禮怀挠,結(jié)果婚禮上析蝴,老公的妹妹穿的比我還像新娘。我一直安慰自己绿淋,他們只是感情好闷畸,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吞滞,像睡著了一般佑菩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上裁赠,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天倘待,我揣著相機(jī)與錄音,去河邊找鬼组贺。 笑死凸舵,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的失尖。 我是一名探鬼主播啊奄,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼掀潮!你這毒婦竟也來了菇夸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤仪吧,失蹤者是張志新(化名)和其女友劉穎庄新,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體薯鼠,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡择诈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了出皇。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片羞芍。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖郊艘,靈堂內(nèi)的尸體忽然破棺而出荷科,到底是詐尸還是另有隱情,我是刑警寧澤纱注,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布畏浆,位于F島的核電站,受9級特大地震影響狞贱,放射性物質(zhì)發(fā)生泄漏刻获。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一斥滤、第九天 我趴在偏房一處隱蔽的房頂上張望将鸵。 院中可真熱鬧勉盅,春花似錦、人聲如沸顶掉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽痒筒。三九已至宰闰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間簿透,已是汗流浹背移袍。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留老充,地道東北人葡盗。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像啡浊,于是被迫代替她去往敵國和親觅够。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容