雲端計算大資料面試題,雲端計算大資料面試題集錦
1. 大資料領域資料型別
1.1 有界資料
一般批處理(一個檔案 或者一批檔案),不管檔案多大,都是可以度量
mapreduce hive sparkcore sparksql
1.2 無界資料
源源不斷的流水一樣 (流資料)
Storm SparkStreaming
2. 訊息佇列(Message Queue)
- 訊息 Message
- 網路中的兩臺計算機或者兩個通訊裝置之間傳遞的資料,例如說:文字、音樂、影片等內容
- 佇列 Queue
- 一種特殊的線性表(資料元素首尾相接),特殊之處在於只允許在首部移除元素和在尾部追加元素。入隊、出隊。
- 訊息佇列 MQ
- 訊息+佇列
- 儲存訊息的佇列
- 訊息的傳輸過程中的容器
- 主要提供生產、消費介面供外部呼叫做資料的儲存和獲取
3. 訊息佇列的分類
3.1 點對點(P2P)
- 一個生產者生產的訊息只能被一個消費者消費
3.2 釋出訂閱(Pub/Sub)
訊息佇列(Queue)、主題(Topic)、釋出者(Publisher)、訂閱者(Subscriber)
- 訊息的釋出者
- 訊息的訂閱者
- 每個訊息可以有多個消費者,彼此互不影響。比如我釋出一個微博:關注我的人都能夠看到。
4. Kafka的簡介
- 在大資料領域呢,為了滿足日益增長的資料量,也有一款可以滿足百萬級別訊息的生成和消費,分散式、持久穩定的產品——Kafka
- Kafka是分散式的釋出—訂閱訊息系統(基於PS的一個訊息佇列)
- 它最初由LinkedIn(領英)公司釋出,使用Scala語言編寫
- Kafka是一個高吞吐量的、永續性的、分散式釋出訂閱訊息系統
- 它主要用於處理活躍的資料(登入、瀏覽、點選、分享、喜歡等使用者行為產生的資料
5. Kafka的特點
- 高吞吐量
- 可以滿足每秒 百萬級 別訊息的生產和消費(生產消費 )
- 永續性
- 有一套完善的訊息儲存機制,確保資料的高效安全的持久化 (資料的儲存)
- 分散式
- 基於分散式的擴充套件和容錯機制;Kafka的資料都會複製到幾臺伺服器上。當某一臺故障失效時,生產者和消費者轉而使用其它的機器——整體健壯性
6. Kafka的元件
- 一個訊息佇列需要哪些部分?
- 生產
- 消費
- 訊息類別
- 儲存等等
- Topic(主題)
- Kafka處理的訊息的不同分類
- Broker (訊息代理)
- Kafka叢集中的一個kafka服務節點稱為一個broker,主要儲存訊息資料,存在硬碟中。每個topic都是有分割槽的
- Partition (物理上的分割槽)
- 一個topic在broker中被分為1個或者多個partition,分割槽在建立topic的時候指定
- Message (訊息)
- 訊息,是通訊的基本單位,每個訊息都屬於一個partition
7. Kafka的服務
- Producer : 訊息和資料的生產者,向Kafka的一個topic釋出訊息
- Consumer :訊息和資料的消費者,定於topic並處理其釋出的訊息
- Zookeeper :協調kafka的正常執行
8. Kafka的安裝
8.1 單機版的安裝
- 準備kafka
- kafka_2.10-0.10.0.1.tgz
- 解壓kafka
- tar -zxvf kafka_2.10-0.10.0.1.tgz -C /opt/
- 重新命名
- mv kafka_2.10-0.10.0.1.tgz kafka
- 配置環境變數
export KAFKA_HOME=/opt/kafka
export PATH=$PATH:$KAFKA_HOME/bin
- 編輯server.properties
broker.id=1
log.dirs=/opt/kafka/logs
zookeeper.connect=uplooking03:2181,uplooking04:2181,uplooking05:2181
listeners=PLAINTEXT://:9092
- 啟動kafka-server服務
kafka-server-start.sh [-daemon] server.properties
- 停止kafka服務
kafka-server-stop.sh
8.2 叢集的安裝
只需要在每個機器上修改對應的 ==broker.id=1== 即可
9. Kafka中Topic的操作
- 建立topic
kafka-topics.sh --create --topic t1 --partitions 3 --replication-factor 1 --zookeeper uplooking03:2181,uplooking04:2181
- ==注意: 建立topic過程的問題,replication-factor個數不能超過brokerserver的個數==
- 檢視topic
kafka-topics.sh --list --zookeeper uplooking03
- 檢視具體topic的詳情
kafka-topics.sh --describe --topic t1 --zookeeper uplooking04:2181
PartitionCount:topic對應的partition的個數
ReplicationFactor:topic對應的副本因子,說白就是副本個數
Partition:partition編號,從0開始遞增
Leader:當前partition起作用的breaker.id
Replicas: 當前副本資料存在的breaker.id,是一個列表,排在最前面的其作用
Isr:當前kakfa叢集中可用的breaker.id列表
- 修改topic(不能修改replication-factor,以及只能對partition個數進行增加,不能減少 )
kafka-topics.sh --alter --topic t1 --partitions 4 --zookeeper uplooking03
- 刪除Topic
kafka-topics.sh --delete --topic t1 --zookeeper uplooking03
- ps:這種刪除只是標記刪除,要想徹底刪除必須設定一個屬性,在server.properties中配置delete.topic.enable=true,否則只是標記刪除
- 配置完成之後,需要重啟kafka服務
10. Kafka中的生產者和消費者介面
- 自己寫程式碼實現kafka提供的訊息生產和消費的介面
- kafka自身也實現了自身的生產和消費的介面,給出了兩個工具(kafka-console-producer.sh , kafka-console-consumer.sh)
11. Kafka自帶的生產和消費訊息的工具
11.1 kafka-console-producer.sh(生產工具)
kafka-console-producer.sh --topic t1 --broker-list uplooking03:9092,uploo
king04:9092,uplooking05:9092
11.2 kafka-console-consumer.sh(消費工具)
kafka-console-consumer.sh --zookeeper uplooking03 --topic t1
--from-beginning:從頭開始消費
--blacklist:黑名單過濾(kafka-console-consumer.sh --zookeeper uplooking03 --blacklist t1,t3)
--whitelist:白名單過濾(kafka-console-consumer.sh --zookeeper uplooking03 --whitelist t2)
ps:--topic|--blacklist|--whitelist 只能出現其中一個
12. ==Flume與Kafka的整合==
- 配置flume的agent配置檔案
- touch flume-kafka.properties
# 對各個元件的描述說明
# 其中a1為agent的名字
# r1是a1的source的代號名字
# c1是a1的channel的代號名字
# k1是a1的sink的代號名字
############################################
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# 用於描述source的,型別是netcat網路
a1.sources.r1.type = netcat
# source監聽的網路ip地址和埠號
a1.sources.r1.bind = uplooking01
a1.sources.r1.port = 44444
# 用於描述sink,型別是kafka
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.topic = hadoop
a1.sinks.k1.brokerList = uplooking03:9092,uplooking04:9092,uplooking05:9092
a1.sinks.k1.requiredAcks = 1
a1.sinks.k1.batchSize = 2
# 用於描述channel,在記憶體中做資料的臨時的儲存
a1.channels.c1.type = memory
# 該記憶體中最大的儲存容量,1000個events事件
a1.channels.c1.capacity = 1000
# 能夠同時對100個events事件監管事務
a1.channels.c1.transactionCapacity = 100
# 將a1中的各個元件建立關聯關係,將source和sink都指向了同一個channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
- 啟動flume開始採集資料
[root@uplooking01:/opt/flume/conf]
flume-ng agent --name a1 --conf-file flume-kafka.properties
- 開啟Kafka訊息消費工具
[root@uplooking03:/opt/flume/conf]
kafka-console-consumer.sh --zookeeper uplooking03 --topic hadoop
- 給flume監聽的Source傳送資料
[root@uplooking03:/]
nc uplooking01 44444
- 現在就可以到kafka的消費工具(kafka-console-consumer.sh)中區檢視nc傳送的資料
13. Kafka的API操作(生產者和消費者)
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.10</artifactId>
<version>0.10.0.1</version>
</dependency>
13.1 Kafka的生產者
- 建立生產者的配置檔案 producer.properties
bootstrap.servers=uplooking03:9092,uplooking04:9092,uplooking05:9092
key.serializer=org.apache.kafka.common.serialization.StringSerializer
value.serializer=org.apache.kafka.common.serialization.StringSerializer
- 建立生產者並且傳送資料到topic中
public class MyKafkaProducer {
public static void main(String[] args) throws IOException {
Properties prop = new Properties();
prop.load(MyKafkaProducer.class.getClassLoader().getResourceAsStream("producer.properties"));
KafkaProducer<String, String> kafkaProducer = new KafkaProducer<String, String>(prop);
kafkaProducer.send(new ProducerRecord<String, String>("hadoop", "name", "admin123"));
kafkaProducer.close();
}
}
13.2 Kafka的消費者
- 建立消費者的配置檔案consumer.properties
zookeeper.connect=uplooking03:2181,uplooking04:2181,uplooking05:2181
group.id=test-consumer-group
bootstrap.servers=uplooking03:9092,uplooking04:9092,uplooking05:9092
key.deserializer=org.apache.kafka.common.serialization.StringDeserializer
value.deserializer=org.apache.kafka.common.serialization.StringDeserializer
- 建立訊息消費者消費topic中的資料
public static void main(String[] args) throws Exception {
Properties prop = new Properties();
prop.load(MyKafkaConsumer.class.getClassLoader().getResourceAsStream("consumer.properties"));
KafkaConsumer<String, String> kafkaConsumer = new KafkaConsumer<String, String>(prop);
Collection topics = new ArrayList();
topics.add("hadoop");
kafkaConsumer.subscribe(topics);
while (true) {
ConsumerRecords<String, String> records = kafkaConsumer.poll(1000);
for (ConsumerRecord<String, String> record : records) {
System.out.println(record.value());
}
}
}
- 自定義分割槽(MyCustomPartition)
package com.uplooking.bigdata.kafka.partition;
public class MyCustomPartition implements Partitioner {
public int partition(String topic, Object key, byte[] keyBytes, Object value, byte[] valueBytes, Cluster cluster) {
//獲取分割槽數, 分割槽編號一般都是從0開始
int partitionSize = cluster.partitionCountForTopic(topic);
int keyHash = Math.abs(key.hashCode());
int valueHash = Math.abs(value.hashCode());
return keyHash % partitionSize;
}
public void close() {
}
public void configure(Map<String, ?> configs) {
}
}
- 配置自定義分割槽(producer.properties)
partitioner.class=com.uplooking.bigdata.kafka.partition.MyCustomPartition
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69916964/viewspace-2648126/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 雲端計算工程師面試題集錦,雲端計算面試題及答案工程師面試題
- 雲端計算面試題及答案,雲端計算工程師面試題集錦面試題工程師
- 雲端計算面試題筆試錦集,雲端計算實用面試題答案二面試題筆試
- 雲端計算面試題筆試錦集,雲端計算實用面試題答案一面試題筆試
- 雲端計算工程師面試題集錦,常見雲端計算面試題及答案工程師面試題
- 雲端計算面試題及答案,AWS雲端計算面試題面試題
- 雲端計算面試題及答案,雲端計算崗位精品面試題面試題
- Linux雲端計算面試題第二彈,樂視雲端計算面試題Linux面試題
- 雲端計算面試題及答案,雲端計算主要就業崗位面試題就業
- 高薪崗位雲端計算面試題,雲端計算運維工程師必備高薪面試題運維工程師
- 雲端計算與大資料[4]大資料
- OpenStack及雲端計算(面試)常見問題面試
- 雲端計算面試題:檔案定位路徑面試題
- 雲端計算面試題及答案,常見的Shell指令碼面試題面試題指令碼
- 雲端計算和大資料學哪個好?雲端計算學習大資料
- 好程式設計師雲端計算教程分享Linux雲端計算面試常見問題一程式設計師Linux面試
- 好程式設計師雲端計算教程分享Linux雲端計算面試常見問題二程式設計師Linux面試
- 好程式設計師雲端計算教程分享Linux雲端計算面試常見問題三程式設計師Linux面試
- 人工智慧+大資料+雲端計算人工智慧大資料
- 大資料與雲端計算概論大資料
- 面試雲端計算崗位時這些面試題不能錯過面試題
- 學習雲端計算怎麼樣?大資料比雲端計算更好嗎?大資料
- 雲端計算面試常見問題,怎麼理解shell?面試
- CSMBD21大資料與雲端計算大資料
- 雲端計算面試常見問題:Linux目錄結構面試Linux
- 雲端計算與大資料要學啥?零基礎能學雲端計算嗎?大資料
- 大資料面試問題大資料面試
- 好程式設計師Linux雲端計算教程分享Shell指令碼面試題程式設計師Linux指令碼面試題
- 大資料和雲端計算註定“糾纏不清”?大資料
- 大資料與雲端計算有什麼關係?大資料
- 雲端計算與大資料有什麼關係?大資料
- 雲端計算學習素材、課件,大資料和雲端計算的關係是什麼?大資料
- 大資料和雲端計算的關係是什麼?-千鋒深圳雲端計算培訓大資料
- 學雲端計算與大資料前景如何?雲端計算是怎麼分類的?大資料
- 大資料面試題——場景題大資料面試題
- 杉巖資料榮膺全球雲端計算大會“雲鼎獎”
- 大資料面試題整理-好程式設計師大資料面試題程式設計師
- 雲端計算、大資料和人工智慧的關係大資料人工智慧