1. 大数据领域数据类型

1.1 有界数据

​一般批处理(一个文件 或者一批文件),不管文件多大,都是可以度量

​mapreduce hive sparkcore sparksql

1.2 无界数据

​源源不断的流水一样 (流数据)

​Storm SparkStreaming

  1. 消息队列(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: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 即可

  1. 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 只能出现其中一个

  1. 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操作(生产者和消费者)

org.apache.kafka

kafka_2.10

0.10.0.1

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

云计算大数据面试题,云计算大数据面试题集锦相关推荐

  1. 云计算和python学哪个_大数据、云计算该如何学习?

    大数据之Linux+大数据开发篇 阶段一.大数据.云计算 - Hadoop大数据开发技术 课程一.大数据运维之Linux基础 本部分是基础课程,帮大家进入大数据领域打好Linux基础,以便更好地学习H ...

  2. 科普丨数据中心、云计算、大数据之间有什么区别和联系?

    不少人把数据中心.云计算数据中心.大数据搞混淆,觉得这三者是一样的产品,其实有显著地区别,数据中心机房是一整套复杂的设施,如今,云计算即将成为信息社会的公共资源,而数据中心则是支撑云计算服务的基础设施 ...

  3. 数据中心、云计算、大数据之间的区别与联系

    数据中心不同于大数据和云计算,很多人容易把三者混淆或者认为是同样东西,其实三者有本质的不同.数据中心机房是一整套复杂的设施,如今,云计算即将成为信息社会的公共资源,而数据中心则是支撑云计算服务的基础设 ...

  4. 大数据-什么是云计算技术,云技术用什么语言开发

    云计算技术: 这里只是列出我所知道的,希望大家对云计算技术有所了解: 一首先让大家明白什么是云端,所谓云端需要两层理解 (1)服务不在本地,这一层可以理解为服务器 (2)它和普通的服务器是不一样的,这 ...

  5. 浅谈大数据领域的云计算

    为了快速部署大数据服务,在中小企业中往往采用云计算的方式.自己使用过4年的AWS的大数据云服务,真得好使,开箱即用,除了贵,其他没毛病,尤其在离线计算领域,因为完美符合离线的场景,但随着实时场景的变多 ...

  6. a人工智能b大数据c云计算_ABC时代生产工具的是()。A、人工智能B、大数据C、云计算D、物联网...

    ABC时代生产工具的是().A.人工智能B.大数据C.云计算D.物联网 更多相关问题 (10分)工业上综合利用黄铜矿(CuFeS2)制备净水剂高铁酸钠(Na2FeO4).铜及其化合物的工业流程如下图所 ...

  7. 大数据技术和云计算之间,主要有什么关系?

    大数据有两大特点,一是数据来源多,包括各种结构化数据和非结构化数据,如网络日志.视频.图片.地理位置信息等等,同时数量相对巨大,大数据中的'大'本身就是一个相对的概念;二是数据处于"onli ...

  8. 【大数据AI人工智能】大数据、云计算和人工智能:未来最热门专业的要点和技能要求

    [大数据&AI人工智能]大数据.云计算和人工智能:未来最热门专业的要点和技能要求 文章目录 [大数据&AI人工智能]大数据.云计算和人工智能:未来最热门专业的要点和技能要求 I. 大数 ...

  9. 互联网时代,大数据技术与云计算平台结合发展、应用

    随着互联网信息技术水平的不断提高,以大数据.云计算等为代表的相关技术在各个领域和行业之中的应用越来越发挥着重要的作用.互联网信息时代的快速发展,各个行业在发展之中都会产生大量的数据.如何对数据进行存储 ...

  10. 01云计算与大数据之大数据环境下的云计算架构

    文章目录 1.应知应会 2.大数据环境的技术特征 3.云计算架构 4.云计算的应用 5.参考文献 1.应知应会 从数据在信息系统中的是生命周期看,大数据从数据源经过分析挖掘到最终获得价值一般需要经过5 ...

最新文章

  1. python 匿名函数的使用
  2. 跨境电子商务B2B出口新政简析
  3. 大学计算机专业选哪个,这么多大学都有计算机专业 究竟选哪个好呢?
  4. Hadoop多用户作业调度器和安全机制的自我总结
  5. Tips:重装系统后Anaconda目录在开始菜单消失问题
  6. That assembly does not allow partially trusted callers.
  7. Java集合—哈希(hash)表
  8. 在Windows XP下,安装VS 2010 Express For Windows Phone .
  9. tkinter如何lable重复显示到同一行中_如何创建包含 CAD 导入和选择的仿真 App
  10. nodejs源码_nodejs之setTimeout源码解析
  11. MscTeX警告Package fontspec Warning: Font “Songti SC Light“ does not contain requested(fontspec)的解决
  12. 01 自动化测试基础
  13. ImageView和ImageButton的区别
  14. FreeRTOS快速入门-初探FreeRTOS
  15. 2048游戏最多能玩到多大的数字?最多能玩多少分?
  16. C++ STL库之vector
  17. 【Java】JDBC基础使用教程
  18. Android-Bitmap图片优化
  19. 解决502 bad gateway的九种方案及原因
  20. pg比mysql优势_postgresql比mysql有多少优势

热门文章

  1. 怎样在表格中选出同一类_如何在excel表格中同一个框选择下一行 - 卡饭网
  2. 【校园二手物品交易平台】
  3. 碰撞盒使用-MeshCollider
  4. 微信天龙八部游戏忘了哪个服务器,新天龙八部玩家苦寻当年的师傅 8年间玩了十个服务器...
  5. 最新: ChatGPT大模型对经济学研究的影响
  6. Axure中继器的使用-更新数据(四)
  7. XMLHttp客户端操作数据
  8. 市场调研报告-全球与中国社交媒体竞赛软件市场现状及未来发展趋势
  9. flex图片拖动效果
  10. 集群智能-蚁群优化算法