hadoop生态(hadoop生态系统)
本篇文章给大家谈谈hadoop生态,以及hadoop生态系统对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、hadoop和hadoop生态圈有什么区别
- 2、Hadoop生态系统-新手快速入门(含HDFS、HBase系统架构)
- 3、什么是 Hadoop 生态系统
- 4、Hadoop生态架构之kafka
- 5、根据数据生命周期画的hadoop生态圈是什么?
hadoop和hadoop生态圈有什么区别
1、Hadoop狭义是框架,广义是生态圈;
2、Hadoop框架,java语言实现开源软盯团件框架,是开发和运行处理大规模数据的软件平台;
3、Hadoop生态凯滚橘圈,当下的Hadoop已经成长为一个庞大的体系,随着生态系统的成长,新出现的项目越来越多,其中包含一些非Apache主管的项目,这些项备激目对HADOOP是很好的补充或者更高层的抽象。
[img]Hadoop生态系统-新手快速入门(含HDFS、HBase系统架构)
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现悉晌激了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。
广义的Hadoop,一般称为Hadoop生态系统,如下所示。
Hadoop生态系统中这些软件的作用:
HDFS 采用了主从(Master/Slave)结构模型,一个HDFS集群包括一个名称节点(NameNode)和若干个数据节点(DataNode)。
HDFS采用Java语言开发,因此任何支持JVM的机器都可以部署名称节点和数据节点。
在配置好Hadoop 集群之后,可以通过浏览器访问 http://[NameNodeIP]:9870,查询HDFS文件系统。通过该Web界面,可以查看当前文件系统中各个节点的分布信息。
HBase系统架构如下所示,包括客户端、Zookeeper服务器、Master主服务器、Region服务器。一般而言,HBase会采用HDFS作为底层数据存储。
在HBase服务器集群中,包含了一个Master和多个Region服务器,Master是HBase集群的“总管”,它必须知道Region服务器的状态。
HBase中可以启动多个Master,但是Zookeeper 可以帮助选举出一个Master 作为集群的总管,并保证在任何时刻总有唯一一个Master在运行,这样可以避免Master单点失效的问题。谨核
Region服务器是HBase中最核心的模块,负责维护分配给自己的Region,并响应用户的读写请求。
Store是Region服务器的核心。每个Store对应了表中的一个列族的存储。每一个Store包含了一个MemStore缓存和若干个StoreFile文件。
HBase采用HLog来保证系统发生故障时,能够恢复到正确的状态。HLog是磁盘上面的记录文件,它记录着所有的更新操作。
HBase系统为每个Region服务器配置了一个HLog文件,它是一种预写式日志(Write Ahead Log),也就是说,用户更新数睁袜据必须首先被记入日志后,才能写入MemStore缓存。
此外,Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单。 Sqoop则为HBase提供了方便的RDBMS数据导入功能,使得传统数据库数据向HBase中迁移变的非常方便。
注意:Hadoop 安装完成之后,只包含HDFS和MapReduce,并不含HBase,因此需要在Hadoop 之上继续安装HBase。
什么是 Hadoop 生态系统
Hadoop是一个能够对大量数历皮据进行分布式处理的软件框架。具有可靠、高效、可伸缩的特点。
Hadoop的核心是HDFS和Mapreduce,hadoop2.0还包括YARN。
下图为hadoop的肢漏差生态系统:搜谨
Hadoop生态架构之kafka
1、定位:分布式的消息队列系统,同时提供数据分布式缓存态卜功能(默认7天)
2、消息持久化到磁盘,达到O(1)访问速度,预读和后写,对磁盘的顺序访问(比内存访问还要快)
3、Storm(分布式的实时计算框架)
Kafka目标成为队列平台
4、基本组件:
Broker:每一台机器是一个Broker
Producer:日志消息生产者,主要写数据
Consumer:日志消息消费者,主要读数据
Topic:是虚拟概念,不同的consumer去指定的topic去读数据,不同producer可以往不同的topic去写
Partition:是实际概念,文件夹,是在Topic的基础上做了进一步分层
5、Partition功能:负载均衡,需要保证消息的顺序性
顺序性拿烂的保证:订阅消息是从头往后读取的,写消息是尾部追加,所以整体消息是顺序的
如果有多个partiton存在,可能会出现顺序不一致帆敏穗的情况,原因:每个Partition相互独立
6、Topic:逻辑概念
一个或多个Partition组成一个Topic
7、Partition以文件夹的形式存在
8、Partition有两部分组成:
(1)index log:(存储索引信息,快速定位segment文件)
(2)message log:(真实数据的所在)
9、HDFS多副本的方式来完成数据高可用
如果设置一个Topic,假设这个Topic有5个Partition,3个replication
Kafka分配replication的算法:
假设:
将第i个Partition分配到(i % N)个Broker上
将第i个Partition的第j个replication分配到( (i+j) % N)个Broker上
虽然Partition里面有多个replication
如果里面有M个replication,其中有一个是Leader,其他M-1个follower
10、zookeeper包系统的可用性,zk中会保存一些meta信息(topic)
11、物理上,不同的topic的消息肯定是分开存储的
12、偏移量——offset:用来定位数据读取的位置
13、kafka内部最基本的消息单位——message
14、传输最大消息message的size不能超过1M,可以通过配置来修改
15、Consumer Group
16、传输效率:zero-copy
0拷贝:减少Kernel和User模式上下文的切换
直接把disk上的data传输给socket,而不是通过应用程序来传输
17、Kafka的消息是无状态的,消费者必须自己维护已消费的状态信息(offset)
减轻Kafka的实现难度
18、Kafka内部有一个时间策略:SLA——消息保留策略(消息超过一定时间后,会自动删除)
19、交付保证:
at least once:至少一次(会有重复、但不丢失)
at most once:最多发送一次(不重复、但可能丢失)
exactly once:只有一次(最理想),目前不支持,只能靠客户端维护
20、Kafka集群里面,topic内部由多个partition(包含多个replication),达到高可用的目的:
日志副本:保证可靠性
角色:主、从
ISR:是一个集合,只有在集合中的follower,才有机会被选为leader
如何让leader知道follower是否成功接收数据(心跳,ack)
如果心跳正常,代表节点活着
21、怎么算“活着”
(1)心跳
(2)如果follower能够紧随leader的更新,不至于被落的太远
如果一旦挂掉,从ISR集合把该节点删除掉
前提:需要把zookeeper提前启动好
一、单机版
1、启动进程:
]# ./bin/kafka-server-start.sh config/server.properties
2、查看topic列表:
]# ./bin/kafka-topics.sh --list --zookeeper localhost:2181
3、创建topic:
]# ./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic newyear_test
4、查看topic描述:
]# ./bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic newyear_test
5、producer发送数据:
]# ./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic newyear_test
6、consumer接收数据:
]# ./bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic newyear_test --from-beginning
7、删除topic:
]# ./bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic newyear_test
二、集群版
在slave1和slave2上的broker.id一定设置不同
分别在slave1和slave2上开启进程:
./bin/kafka-server-start.sh config/server.properties
创建topic:
]# ./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 5 --topic newyear_many_test
1、实现一个consumer group
首先在不同的终端分别开启consumer,保证groupid一致
]# python consumer_kafka.py
执行一次producer:
]# python producer_kafka.py
2、指定partition发送数据
]# python producer_kafka_2.py
3、指定partition读出数据
]# python consumer_kafka_2.py
consumer_kafka.py:
producer_kafka.py:
consumer_kafka_2.py:
producer_kafka_2.py:
1.新建./conf/kafka_test/flume_kafka.conf
2.启动flume:
]# flume-ng agent -c conf -f ./conf/kafka_test/flume_kafka.conf -n a1 -Dflume.root.logger=INFO,console
启动成功,如下图:
3.测试:
1.1flume监控产生的数据:
]# for i in seq 1 100 ; do echo '==== '$i 1.log ; done
1.2kafka消费数据:
]# ./bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic topic_1013 --from-beginning
消费结果如下图:
根据数据生命周期画的hadoop生态圈是什么?
Hadoop生态圈通常被认为是指一系列与Hadoop相关的开源软件和工具,这些软件和工具能够实现数据生命周期的各个阶段,包括数据采集、存储、处理、分析和可视化等。
下面是一个根据数据生命周期画的Hadoop生态圈:
数据采集:数据采集是数据生命周期的第一阶段。在这个阶段,我们需要从各种来源收集数据,包括传感器、网络日志、社交媒体、传统数据库等。在Hadoop生态圈中,一蔽镇渗些流行的数据采集工具包括Flume、Kafka和Sqoop等。
数据存储:数据存储是数据生命周期的第二阶宏脊段。在这个阶段,我们需要把数据存储到一个能够支持大规模数据存储和分布式处理的系统中。在Hadoop生态圈中,Hadoop HDFS是一个常见的分布式文件系统,它被广泛应用于大规模数据存储。此外,Hadoop生态圈还包括了其他一些用于数据存储的工具,如HBase、Cassandra、MongoDB等。
数据处理:数据处理是数据生命周期的第三阶段。在这个阶段,我们需要对数据进行处理和转换,以便能够更好地分析数据。在Hadoop生态圈中,Hadoop MapReduce是一个广泛应用于大规模数据处理的框架。此外,Hadoop生态圈还包括了其他一些数据处理工具,如Spark、Flink、Storm等。
数据分析:数据分析是数据生命周期的第四阶段。在这个阶段,我们需要从处理后的数据中提取有用的信息,并进行分析。在Hadoop生态圈中,Hadoop Hive和Hadoop Pig是两个常见的数据分析工具。此外,Hadoop生态圈还包括了其他一些数据分析工具,如Impala、Drill等。
数据可视化:数据可视化是数据生命周期的最后一个阶段。在这个阶段,我们需要使用图表、报表等形式把数据展示旅喊给用户。在Hadoop生态圈中,一些常见的数据可视化工具包括Tableau、QlikView、PowerBI等。
总的来说,Hadoop生态圈包括了众多的开源软件和工具,这些软件和工具构成了一个完整的大数据生态系统,能够帮助我们更好地管理和分析数据。
关于hadoop生态和hadoop生态系统的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。