大數據領(lǐng)域中操作的數據類(lèi)型:
Bounded:有界----->一般批處理(一個(gè)文件或者一批文件,不管文件多大,都是可以度量,eg 1T 1PB 1EB 1NB)
HADOOP-MR Hive SparkCore。。。
Unbounded:無(wú)界----->源源不斷的流水一樣(流數據,就像水流一樣)
Storm Spark-Streaming Flink。。。
---------------------------------------------------------------------------------
消息隊列(Message Queue)
消息 Message
網(wǎng)絡(luò )中的兩臺計算機或者兩個(gè)通訊設備之間傳遞的數據。例如說(shuō):文本、音樂(lè )、視頻等內容。
隊列 Queue
一種特殊的線(xiàn)性表(數據元素首尾相接),特殊之處在于只允許在首部刪除元素和在尾部追加元素。入隊、出隊。
消息隊列 MQ
消息+隊列,保存消息的隊列。消息的傳輸過(guò)程中的容器;主要提供生產(chǎn)、消費接口供外部調用做數據的存儲和獲取。
MQ主要分為兩類(lèi):點(diǎn)對點(diǎn)(p2p)、發(fā)布訂閱(Pub/Sub)
共同點(diǎn):
消息生產(chǎn)者生產(chǎn)消息發(fā)送到queue中,然后消息消費者從queue中讀取并且消費消息。
不同點(diǎn):
p2p模型包括:消息隊列(Queue)、發(fā)送者(Sender)、接收者(Receiver)
一個(gè)生產(chǎn)者生產(chǎn)的消息只有一個(gè)消費者(Consumer)(即一旦被消費,消息就不在消息隊列中)。比如說(shuō)打電話(huà)。
Pub/Sub包含:消息隊列(Queue)、主題(Topic)、發(fā)布者(Publisher)、訂閱者(Subscriber)
每個(gè)消息可以有多個(gè)消費者,彼此互不影響。比如我發(fā)布一個(gè)微博:關(guān)注我的人都能夠看到。
那么在大數據領(lǐng)域呢,為了滿(mǎn)足日益增長(cháng)的數據量,也有一款可以滿(mǎn)足百萬(wàn)級別消息的生成和消費,分布式、持久穩定的產(chǎn)品——Kafka。
---------------------------------------------------------------------------------
Kafka簡(jiǎn)介
Kafka是分布式的發(fā)布—訂閱消息系統。它最初由LinkedIn(領(lǐng)英)公司發(fā)布,使用Scala語(yǔ)言編寫(xiě),于2010年12月份開(kāi)源,成為Apache的頂級項目。Kafka是一個(gè)高吞吐量的、持久性的、分布式發(fā)布訂閱消息系統。它主要用于處理活躍的數據(登錄、瀏覽、點(diǎn)擊、分享、喜歡等用戶(hù)行為產(chǎn)生的數據)。
三大特點(diǎn):
高吞吐量
可以滿(mǎn)足每秒百萬(wàn)級別消息的生產(chǎn)和消費——生產(chǎn)消費。
持久性
有一套完善的消息存儲機制,確保數據的高效安全的持久化——中間存儲。
分布式
基于分布式的擴展和容錯機制;Kafka的數據都會(huì )復制到幾臺服務(wù)器上。當某一臺故障失效時(shí),生產(chǎn)者和消費者轉而使用其它的機器——整體健壯性。
Kafka的組件
一個(gè)MQ需要哪些部分?生產(chǎn)、消費、消息類(lèi)別、存儲等等。
對于kafka而言,kafka服務(wù)就像是一個(gè)大的水池。不斷的生產(chǎn)、存儲、消費著(zhù)各種類(lèi)別的消息。那么kafka由何組成呢?
> Kafka服務(wù):
> Topic:主題,Kafka處理的消息的不同分類(lèi)。
> Broker:消息代理,Kafka集群中的一個(gè)kafka服務(wù)節點(diǎn)稱(chēng)為一個(gè)broker,主要存儲消息數據。存在硬盤(pán)中。每個(gè)topic都是有分區的。
> Partition:Topic物理上的分組,一個(gè)topic在broker中被分為1個(gè)或者多個(gè)partition,分區在創(chuàng )建topic的時(shí)候指定。
> Message:消息,是通信的基本單位,每個(gè)消息都屬于一個(gè)partition
> Kafka服務(wù)相關(guān)
> Producer:消息和數據的生產(chǎn)者,向Kafka的一個(gè)topic發(fā)布消息。
> Consumer:消息和數據的消費者,定于topic并處理其發(fā)布的消息。
> Zookeeper:協(xié)調kafka的正常運行。
---------------------------------------------------------------------------------
Kafka的安裝
單機安裝
解壓: opt]# tar -zxvf soft/kafka_2.10-0.10.0.1.tgz
重命名:opt]# mv kafka_2.10-0.10.0.1/ kafka
添加KAFKA_HOME至環(huán)境變量:/etc/profile.d/hadoop-etc.sh
export KAFKA_HOME=/opt/kafaka
export PATH=$PATH:$KAFKA_HOME/bin
配置相關(guān)參數:$KAFKA_HOME/config/server.properties
主要參數:broker.id、log.dirs、zookeeper.connect
broker.id=0
log.dirs=/opt/logs/kafka [kafka數據的存放目錄](méi)
zookeeper.connect=uplooking01:2181,uplooking02:2181,uplooking03:2181
kafka實(shí)例broker監聽(tīng)默認端口9092,配置listeners=PLAINTEXT://:9092
啟動(dòng):
$KAFKA_HOME/bin/kafka-server-start.sh [-daemon] config/server.properties
-daemon 可選,表示后臺啟動(dòng)kafka服務(wù)
---------------------------------------------------------------------------------
Kafka的操作--topic
創(chuàng )建Topic
hadoop
kafka]# bin/kafka-topics.sh --create --topic hadoop --zookeeper uplooking01:2181,uplooking02:2181,uplooking03:2181 --partitions 1 --replication-factor 1
kafka]# bin/kafka-topics.sh --create --topic hive --zookeeper uplooking01:2181,uplooking02:2181,uplooking03:2181 --partitions 1 --replication-factor 1
kafka]# bin/kafka-topics.sh --create --topic hbase --zookeeper uplooking01:2181,uplooking02:2181,uplooking03:2181 --partitions 3 --replication-factor 1
創(chuàng )建topic過(guò)程的問(wèn)題,replication-factor個(gè)數不能超過(guò)broker的個(gè)數
bin/kafka-topics.sh --create --topic sqoop --zookeeper uplooking01:2181,uplooking02:2181,uplooking03:2181 --partitions 3 --replication-factor 3
Error while executing topic command : replication factor: 3 larger than available brokers: 1
查看Topic列表
kafka]# bin/kafka-topics.sh --list --zookeeper uplooking01:2181,uplooking02:2181,uplooking03:2181
查看某一個(gè)具體的Topic
kafka]# bin/kafka-topics.sh --describe --topic hadoop --zookeeper uplooking01:2181,uplooking02:2181,uplooking03:2181
Topic:hadoopPartitionCount:1ReplicationFactor:1
Configs:
Topic: hadoopPartition: 0Leader: 0Replicas: 0Isr: 0
PartitionCount:topic對應的partition的個(gè)數
ReplicationFactor:topic對應的副本因子,說(shuō)白就是副本個(gè)數
Partition:partition編號,從0開(kāi)始遞增
Leader:當前partition起作用的breaker.id
Replicas: 當前副本數據坐在的breaker.id,是一個(gè)列表,排在最前面的其作用
Isr:當前kakfa集群中可用的breaker.id列表
修改Topic
不能修改replication-factor,以及只能對partition個(gè)數進(jìn)行增加,不能減少
bin/kafka-topics.sh --alter --topic hive --zookeeper uplooking01:2181,uplooking02:2181,uplooking03:2181 --partitions 3
partition由3變?yōu)?的時(shí),拋出的異常:
ERROR kafka.admin.AdminOperationException: The number of partitions for a topic can only be increased
刪除Topic
kafka]# bin/kafka-topics.sh --delete --topic hbase --zookeeper uplooking01:2181,uplooking02:2181,uplooking03:2181
Topic hbase is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.
徹底刪除一個(gè)topic,需要在server.properties中配置delete.topic.enable=true,否則只是標記刪除
配置完成之后,需要重啟kafka服務(wù)
---------------------------------------------------------------------------------
kafka-topic-生產(chǎn)消費數據(控制臺命令行的操作方式)
生產(chǎn)數據:kafka]# bin/kafka-console-producer.sh --topic hive --broker-list uplooking01:9092
消費數據:bin/kafka-console-consumer.sh --blacklist hive --zookeeper uplooking01:2181,uplooking02:2181,uplooking03:2181
--from-beginning從頭開(kāi)始消費數據
--blacklist黑名單過(guò)濾
kafka]# bin/kafka-console-producer.sh --topic hbase --broker-list uplooking01:9092
hbase
kafka]# bin/kafka-console-producer.sh --topic sqoop --broker-list uplooking01:9092
sqoop
kafka]# bin/kafka-console-producer.sh --topic hive --broker-list uplooking01:9092
hive
bin/kafka-console-consumer.sh --blacklist hive,hbase --zookeeper uplooking01:2181,uplooking02:2181,uplooking03:2181
sqoop
--whitelist白名單過(guò)濾
bin/kafka-console-consumer.sh --whitelist hive,hbase --zookeeper uplooking01:2181,uplooking02:2181,uplooking03:2181
hive
hbase
---------------------------------------------------------------------------------
Kafka分布式集群的安裝
在單機的基礎之上,只要修改server.properties配置文件中的broker.id是其在集群能夠保證唯一即可,
kafka集群中的節點(diǎn)沒(méi)有主從之分,大家都是一樣的
在每一臺機器上啟動(dòng)方式和單機啟動(dòng)一致
---------------------------------------------------------------------------------