CentOS7.4x86-64(操做系統的x86_64是跟CPU有關的,最先AMD公司開發出了一款向下兼容x86CPU,向上又擴充了指令集,具備了64位CPU的特性,這款CPU後來更名爲AMD64,Intel在AMD以後也開發了這樣一款CPU,取名叫作x86_64),因此操做系統的x86_64就是指這款操做系統是64位的。使用uname -a查看操做系統版本。html
首先找到jdk下載的官網網址,而後在你要下載的jdk版本上右鍵單擊,在彈出的選擇框選擇複製連接,獲得jdk11的下載連接爲:http://download.oracle.com/otn-pub/java/jdk/11+28/55eed80b163941c8885ad9298e6d786a/jdk-11_linux-x64_bin.tar.gzjava
在/usr/目錄下建立java目錄,使用wget命令下載jdk安裝包到當前目錄,命令爲:(由於jdk下載時須要接收協議,因此wget命令比較特別)node
wget --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie;" http://download.oracle.com/otn-pub/java/jdk/11+28/55eed80b163941c8885ad9298e6d786a/jdk-11_linux-x64_bin.tar.gz
下載好了之後可使用ls命令查看這個安裝包是否下載成功了。接下來使用tar命令解包linux
tar -zxvf jdk-11_linux-x64_bin.tar.gz
而後,配置java環境,就是windows下的環境變量的配置,打開/etc/profile文件,在最下方插入下面兩行:apache
export JAVA_HOME=/usr/java/jdk-10.0.2 //這個就是你的包解壓後的結果 export PATH=$JAVA_HOME/bin/:$PATH
最後,輸入source /etc/profile,強制刷新配置文件。而後輸入java -version便可查看你所安裝的jdk的版本號,在本次試驗中個人java版本是jdk10。bootstrap
Kafka使用Zookeeper保存集羣的元數據信息和消費者信息。Kafka發行版本自帶了Zookeeper,能夠直接從腳本啓動。本例安裝一個完整的Zookeeper。windows
元數據(Metadata),又稱中介數據、中繼數據,爲描述數據的數據(data about data),主要是描述數據屬性(property)的信息,用來支持如指示存儲位置、歷史數據、資源查找、文件記錄等功能。元數據算是一種電子式目錄,爲了達到編制目錄的目的,必須在描述並收藏數據的內容或特點,進而達成協助數據檢索的目的。服務器
元數據是關於數據的組織、數據域及其關係的信息,簡言之,元數據就是關於數據的數據。cookie
從apache.org下載Zookeeper的穩定版,下載地址爲:http://mirrors.hust.edu.cn/apache/zookeeper/stable/zookeeper-3.4.12.tar.gz。版本爲3.4.12。oracle
Zookeeper的安裝目錄爲/usr/local/zookeeper。數據目錄爲/var/lib/zookeeper。
下載Zookeeper的安裝包:
wget http://mirrors.hust.edu.cn/apache/zookeeper/stable/zookeeper-3.4.12.tar.gz
解壓安裝包
tar -zxf zookeeper-3.4.12.tar.gz
建立數據目錄
mkdir -p /var/lib/zookeeper
建立Zookeeper的配置文件,並填寫內容
[root@CentOs64-7 zookeeper]# mkdir -p /var/lib/zookeeper [root@CentOs64-7 zookeeper]# cat > /usr/local/zookeeper/zookeeper-3.4.12/conf/zoo.cfg << EOF > tickTime = 2000 > dataDir=/var/lib/zookeeper > clientPort=2181 > EOF
最後zookeeper完整的配置文件內容爲
#Zookeeper定義的基準時間間隔,單位:毫秒。服務器與客戶端之間交互的基本時間單元,也就是Zookeeper服務器之間或服務器與客戶端之間每隔一個tickTime就發送一次心跳 tickTime=2000 #數據目錄,zookeeper保存數據的目錄,默認狀況下,Zookeeper將寫數據的日誌文件也保存在這個目錄下 dataDir=/var/lib/zookeeper #客戶端訪問zookeeper的端口號,Zookeeper會監聽這個端口,接收客戶端的訪問請求 clientPort=2181 #集羣中的Follower(F)服務器和Leader(L)服務器之間初始鏈接時能容忍的最多心跳數(即tickTime的數目) initLimit=5 #syncLimit:Leader-Follower同步通訊時限,集羣中的follower服務器與leader服務器之間請求和應答之間能容忍的最多心跳數(即tickTime的數量) syncLimit=2
啓動經過腳本啓動zookeeper,命令爲:
/usr/local/zookeeper/zookeeper-3.4.12/bin/zkServer.sh start // start 前的目錄路徑爲腳本的保存路徑,它在你的zookeeeper的安裝目錄下
執行結果以下:
如上所示:說明單機版的zookeeper就已經啓動了。其它一些ookeeper的命令:
1.查詢 zookeeper 狀態: zkServer.sh status 2.關閉 zookeeper 服務: zkServer.sh stop 如打印以下信息則代表成功關閉: ZooKeeper JMX enabled by default Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg Stopping zookeeper ... STOPPED 3.重啓 zookeeper 服務: zkServer.sh restart 如打印以下信息則代表重啓成功: ZooKeeper JMX enabled by default Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg ZooKeeper JMX enabled by default Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg Stopping zookeeper ... STOPPED ZooKeeper JMX enabled by default Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
1.查詢 zookeeper 狀態: zkServer.sh status 2.關閉 zookeeper 服務: zkServer.sh stop 如打印以下信息則代表成功關閉: ZooKeeper JMX enabled by default Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg Stopping zookeeper ... STOPPED 3.重啓 zookeeper 服務: zkServer.sh restart 如打印以下信息則代表重啓成功: ZooKeeper JMX enabled by default Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg ZooKeeper JMX enabled by default Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg Stopping zookeeper ... STOPPED ZooKeeper JMX enabled by default Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
如今能夠鏈接到Zookeeper端口上,經過發送四字命令srvr是否安裝正確。使用命令:
此時終端會停在這裏,它是在等待你的輸入。咱們發送srvr,得運行結果以下:
[root@CentOs64-7 ~]# telnet localhost 2181 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. srvr Zookeeper version: 3.4.12-e5259e437540f349646870ea94dc2658c4e44b3b, built on 03/27/2018 03:55 GMT Latency min/avg/max: 0/0/0 Received: 1 Sent: 0 Connections: 1 Outstanding: 0 Zxid: 0x0 Mode: standalone Node count: 4 Connection closed by foreign host.
這說明,單擊的zookeeper已經安裝成功而了。
最後爲zookeeper配置環境變量
添加export ZOOKEEPER_HOME=/usr/local/zookeeper 在path中添加$ZOOKEEPER_HOME/bin 而後使用source /etc/profile 當即刷新配置文件
先在結點下試驗(這個先欠着),還欠缺一個zookeeper是什麼的博客。
Kafkade 最新版本能夠從http://kafka.apache.org/downloads.html下載最新的版本。截止本試驗日期爲止,最新的穩定版是2.0.0。官網提供源碼包下載和兩個不一樣Scala版本編譯好的Kafka,能夠直接下載安裝運行。
本次試驗下載編譯好的版本:http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.0.0/kafka_2.11-2.0.0.tgz
使用wget命令,將這個安裝包下載到/usr/local/kafka目錄下
[root@CentOs64-7 kafka]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.0.0/kafka_2.11-2.0.0.tgz --2018-10-18 10:44:31-- http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.0.0/kafka_2.11-2.0.0.tgz Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.8.193, 2402:f000:1:408:8100::1 Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.8.193|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 55751827 (53M) [application/octet-stream] Saving to: ‘kafka_2.11-2.0.0.tgz’ 100%[=====================================================================================================================================================>] 55,751,827 13.5MB/s in 3.6s 2018-10-18 10:44:35 (14.8 MB/s) - ‘kafka_2.11-2.0.0.tgz’ saved [55751827/55751827]
解壓(其實就是安裝了)
tar -zxf kafka_2.11-2.0.0.tgz
/bin 操做kafka的可執行腳本,還包含windows下腳本
/config 配置文件所在目錄
/libs 依賴庫目錄
/logs 日誌數據目錄,目錄kafka把server端日誌分爲5種類型,分爲:server,request,state,log-cleaner,controller
建立保存kafka日誌的目錄
mkdir /tmp/kafka-logs
啓動kafka
/usr/local/kafka/kafka_2.11-2.0.0/bin/kafka-server-start.sh -daemon /usr/local/kafka/kafka_2.11-2.0.0/config/server.properties
檢查9092端口和2181端口,9092是kafka的默認端口,2181是zookeeper的默認端口
[root@CentOs64-7 site-docs]# netstat -tunlp|egrep "(2181|9092)"
tcp 0 0 0.0.0.0:9092 0.0.0.0:* LISTEN 28688/java
tcp 0 0 0.0.0.0:2181 0.0.0.0:* LISTEN 27193/java
如上,說明kafka已經啓動。
接下來,驗證這個kafka是否安裝正確
1.建立並驗證主題
[root@CentOs64-7 site-docs]# /usr/local/kafka/kafka_2.11-2.0.0/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test Created topic "test". //說明主題建立成功
2.查看你建立的主題的詳細信息,若是不指定主題(添加--topic參數),那麼查看全部的主題信息
[root@CentOs64-7 site-docs]# /usr/local/kafka/kafka_2.11-2.0.0/bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic test Topic:test PartitionCount:1 ReplicationFactor:1 Configs: Topic: test Partition: 0 Leader: 0 Replicas: 0 Isr: 0
3.向測試主題上發佈消息
[root@CentOs64-7 site-docs]# /usr/local/kafka/kafka_2.11-2.0.0/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test >Test Mese ^H >Test Message 1^H^[[3~ >q
輸入後按Ctrl+D退出輸入。
4.從測試主題上讀取消息
/usr/local/kafka/kafka_2.11-2.0.0/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test -- from-beginning //上面這個命令用於kafka0.9以及0.9如下版本使用這個命令 /usr/local/kafka/kafka_2.11-2.0.0/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning //上面命令用於kafka0.9用這個命令
輸入Ctrl+C退出消費。
5.查看topic列表
/usr/local/kafka/kafka_2.11-2.0.0/bin/kafka-topics.sh --list --zookeeper localhost:2181
6.刪除topic
kafka-topics.sh --delete --zookeeper node1:2181 --topic my-kafka-topic
producer,指定的Socket(192.168.1.181+9092),說明生產者的消息要發往kafka,也便是broker
consumer, 指定的Socket(192.168.1.181+2181),說明消費者的消息來自zookeeper(協調轉發)
本小節參考:https://blog.csdn.net/caoshangpa/article/details/79743830
會編譯,有備無患。下載源碼kafka-1.1.0-src.tgz
解壓,這裏也解壓到/home目錄下
> tar -xzf kafka-1.1.0-src.tgz > cd kafka-1.1.0-src
查看裏面的README.md文檔,編譯依賴1.Gradle 3.0或更高版本;2.Java 7。jdk前面已經安裝過了,如今安裝Gradle。
Gradle下載https://gradle.org/install/,該頁面指出Gradle依賴Java 7或更高版本。最新的Gradle版本是4.6,下載其編譯好的二進制包gradle-4.6-bin.zip。
解壓,這裏也解壓到/home目錄下
$ unzip -d gradle-4.6-bin.zip $ ls radle-4.6 LICENSE NOTICE bin getting-started.html init.d lib media
將bin添加到環境變量,編輯/etc/profile文件,在其末尾添加
export PATH=$PATH:/home/zhangcan/gradle-4.6/bin
使修改的profile當即生效
$ source /etc/profile
測試一下
$ gradle -v
CD到kafka源碼目錄,開始編譯
1.輸入gradle指令,開始下載環境
$ gradle
下載了一堆東西,若是提示有文件下載失敗,多執行幾回該指令便可
2.編譯
$ ./gradlew releaseTarGz -x signArchives
仍是下載了一堆東西,若是提示有文件下載失敗,多執行幾回該指令便可。編譯成功後會提示。
此時,會在kafka-1.1.0-src/core/build/distributions目錄下生成一個名爲kafka_2.11-1.1.0.tgz的二進制包,這個包和從官網下載的二進制包是同樣的