集群技术

0432-什么是HDFS的纠删码

风流意气都作罢 提交于 2020-02-18 21:46:36
温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。 Fayson的github: https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 Fayson在前面的文章中介绍过CDH6,参考《Cloudera Enterprise 6正式发布》和《如何在Redhat7.4安装CDH6.0》。CDH6主要集成打包了Hadoop3,包括Hadoop3的一些新特性的官方支持,比如NameNode联邦,纠删码等。纠删码可以将HDFS的存储开销降低约50%,同时与三分本策略一样,还可以保证数据的可用性。本文Fayson主要介绍纠删码的工作原理。 默认情况下,HDFS的数据块都会保存三个副本。副本提供了一种简单而健壮的冗余方式来最大化保证数据的可用性。数据的多副本同时可以尽量保证计算任务的本地化。 但副本方式成本是较高的:默认情况下三副本方式会在存储空间或其他资源(比如写入数据时的网络带宽)中产生200%的开销。对于较少访问的数据集(对集群的I/O影响相对不大),它们的第二个或者第三个副本会比较少访问,但是仍会消耗相同的存储空间。 因此可以使用纠删码(ErasureCoding)来代替多副本的方式,它使用更少的存储却可以保证相同级别的容错。在典型配置下,与三副本方式相比,EC可以将存储成本降低约50%

集群日志收集架构ELK

浪尽此生 提交于 2020-02-18 21:03:44
前言 前几篇我们介绍了项目中 如何使用logback组件记录系统的日志情况 ;现在我们的系统都是分布式的,集群化的,那就代表着**我们的应用会分布在很多服务器上面;**那应用的日志文件就会分布在各个服务器上面。 问题 突然有一天我们系统出现了问题,我们第一时间想到的是 先要判断到底哪个服务出现了问题 ;我们的技术人员就连接生产环境服务器,查看服务器上面的应用日志。 那么多的服务器,技术人员这个时候就会很抓狂 ,一个个的查看分析日志,是比较愚蠢的方法。那有什么好的方式呢?今天老顾给大家介绍常规的方案。 ELK方案 ELK 是elastic公司提供的一套完整的日志收集以及展示的解决方案 ,是三个产品的首字母缩写,分别是ElasticSearch、Logstash 和 Kibana。 ElasticSearch简称ES ,它是一个 实时的分布式搜索和分析引擎 ,它可以用于全文搜索,结构化搜索以及分析。它是一个 建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎 ,使用 Java 语言编写。 Logstash是一个具有实时传输能力的数据收集引擎 ,用来进行数据收集(如:读取文本文件)、解析,并将数据 发送给ES 。 Kibana为 Elasticsearch 提供了分析和可视化的 Web 平台 。它可以在 Elasticsearch 的索引中查找,交互数据,并生成各种维度表格

Kafka监控工具汇总

*爱你&永不变心* 提交于 2020-02-18 01:23:01
对于大数据集群来说,监控功能是非常必要的,通过日志判断故障低效,我们需要完整的指标来帮我们管理Kafka集群。本文讨论Kafka的监控以及一些常用的第三方监控工具。 一、Kafka Monitoring 首先介绍kafka的监控原理,第三方工具也是通过这些来进行监控的,我们也可以自己去是实现监控,官网关于监控的文档地址如下: http://kafka.apache.org/documentation/#monitoring ]( http://kafka.apache.org/documentation/#monitoring ) kafka使用Yammer Metrics进行监控,Yammer Metrics是一个java的监控库。 kafka默认有很多的监控指标,默认都使用JMX接口远程访问,具体方法是在启动broker和clients之前设置JMX_PORT: JMX_PORT=9997 bin/kafka-server-start.sh config/server.properties Kafka的每个监控指标都是以JMX MBEAN的形式定义的,MBEAN是一个被管理的资源实例。 我们可以使用Jconsole (Java Monitoring and Management Console),一种基于JMX的可视化监视、管理工具。 来可视化监控的结果: 图2

浅析分布式系统中的一致性哈希算法

点点圈 提交于 2020-02-17 08:59:42
分布式系统与高并发高可用 浅析分布式系统中的一致性哈希算法 通过本文将了解到以下内容: 分布式系统的简单概念和基本作用 分布式系统常用负载均衡策略 普通哈希取模策略优缺点 一致性哈希算法的定义和思想 一致性哈希的基本过程 Redis集群中一致性哈希的实现 1.分布式系统的基本概念 分布式系统与高并发高可用 当今高并发和海量数据处理等场景越来越多,实现服务应用的高可用、易扩展、短延时等成为必然。 在此情况下分布式系统应运而生,互联网的场景无外乎存储和计算,因此分布式系统可以简单地分为: 分布式存储 分布式计算 所谓分布式系统就是一批计算机组合起来共同对外提供服务,对于用户来说具体有多少规模的计算机完成了这次请求,完全是无感知的。分布式系统中的计算机越多,意味着计算和存储资源等也就越多,能够处理的并发访问量也就越大,响应速度也越快。 如图为简单整体架构图: 大前端 主要实现了服务应用对应的所有流量的接入,比如xyz域名下可能有N个子服务,这一层涉及很多网络流量的处理,也很有挑战,像百度的BFE(百度统一前端)接入了百度的大部分流量,每日转发1万亿次,峰值QPS1000w。 中间层 完成了各个服务的调度和分发,粒度相比大前端接入层更细致一些,这一层实现了用户的无感知体验,可以简单理解为反向代理层。 业务层 完成了数据存储、数据计算、数据缓存等,各个业务环节高度解耦,并且基于集群化来实现。

构建高并发高可用的电商平台架构实践

為{幸葍}努か 提交于 2020-02-17 07:25:52
一、 设计理念 1. 空间换时间 1) 多级缓存,静态化 客户端页面缓存(http header中包含Expires/Cache of Control,last modified(304,server不返回body,客户端可以继续用cache,减少流量),ETag) 反向代理缓存 应用端的缓存(memcache) 内存数据库 Buffer、cache机制(数据库,中间件等) 2) 索引 哈希、B树、倒排、bitmap 哈希索引适合综合数组的寻址和链表的插入特性,可以实现数据的快速存取。 B树索引适合于查询为主导的场景,避免多次的IO,提高查询的效率。 倒排索引实现单词到文档映射关系的最佳实现方式和最有效的索引结构,广泛用在搜索领域。 Bitmap是一种非常简洁快速的数据结构,他能同时使存储空间和速度最优化(而不必空间换时间),适合于海量数据的的计算场景。 2. 并行与分布式计算 1) 任务切分、分而治之(MR) 在大规模的数据中,数据存在一定的局部性的特征,利用局部性的原理将海量数据计算的问题分而治之。 MR模型是无共享的架构,数据集分布至各个节点。处理时,每个节点就近读取本地存储的数据处理(map),将处理后的数据进行合并(combine)、排序(shuffle and sort)后再分发(至reduce节点),避免了大量数据的传输,提高了处理效率。 2) 多进程、多线程并行执行

构建高并发高可用的电商平台架构实践

我们两清 提交于 2020-02-17 07:05:25
从各个角度总结了电商平台中的架构实践,由于时间仓促,定了个初稿,待补充完善,欢迎大家一起交流。 转载请声明出处: http://blog.csdn.net/yangbutao/article/details/12242441 作者:杨步涛 关注分布式架构、大数据、搜索、开源技术 QQ:306591368 技术Blog: http://blog.csdn.net/yangbutao 一、 设计理念 1. 空间换时间 1) 多级缓存,静态化 客户端页面缓存(http header中包含Expires/Cache of Control,last modified(304,server不返回body,客户端可以继续用cache,减少流量),ETag) 反向代理缓存 应用端的缓存(memcache) 内存数据库 Buffer、cache机制(数据库,中间件等) 2) 索引 哈希、B树、倒排、bitmap 哈希索引适合综合数组的寻址和链表的插入特性,可以实现数据的快速存取。 B树索引适合于查询为主导的场景,避免多次的IO,提高查询的效率。 倒排索引实现单词到文档映射关系的最佳实现方式和最有效的索引结构,广泛用在搜索领域。 Bitmap是一种非常简洁快速的数据结构,他能同时使存储空间和速度最优化(而不必空间换时间),适合于海量数据的的计算场景。 2. 并行与分布式计算 1) 任务切分、分而治之

构建高并发高可用的电商平台架构实践

时间秒杀一切 提交于 2020-02-17 06:44:57
从各个角度总结了电商平台中的架构实践,由于时间仓促,定了个初稿,待补充完善,欢迎大家一起交流。 转载请声明出处: http://blog.csdn.net/yangbutao/article/details/12242441 作者:杨步涛 关注分布式架构、大数据、搜索、开源技术 QQ:306591368 技术Blog: http://blog.csdn.net/yangbutao 一、 设计理念 1. 空间换时间 1) 多级缓存,静态化 客户端页面缓存(http header中包含Expires/Cache of Control,last modified(304,server不返回body,客户端可以继续用cache,减少流量),ETag) 反向代理缓存 应用端的缓存(memcache) 内存数据库 Buffer、cache机制(数据库,中间件等) 2) 索引 哈希、B树、倒排、bitmap 哈希索引适合综合数组的寻址和链表的插入特性,可以实现数据的快速存取。 B树索引适合于查询为主导的场景,避免多次的IO,提高查询的效率。 倒排索引实现单词到文档映射关系的最佳实现方式和最有效的索引结构,广泛用在搜索领域。 Bitmap是一种非常简洁快速的数据结构,他能同时使存储空间和速度最优化(而不必空间换时间),适合于海量数据的的计算场景。 2. 并行与分布式计算 1) 任务切分、分而治之

1. 虚拟机centos集群搭建

我只是一个虾纸丫 提交于 2020-02-15 11:40:42
目录 课程大纲 整体架构 环境搭建 在虚拟机中安装CentOS 每个CentOS中安装Java和Perl 安装JDK 安装Perl 在4个虚拟机中安装CentOS集群 ssh免密码互相通信 总结 课程大纲 1、在虚拟机中安装CentOS 2、在每个CentOS中都安装Java和Perl 3、在4个虚拟机中安装CentOS集群 4、配置4台CentOS为ssh免密码互相通信 整体架构 一步一步搭建出一个 4个节点的CentOS集群 。学习大型的分布式的redis集群架构,一步一步纯手工搭建 redis集群 ,集群部署,主从架构,分布式集群架构 实时计算技术的应用,包括 storm ,讲解一下storm的基础知识,对于java工程师来说,会用就可以了,用一些storm最基本的分布式实时计算的feature就ok了,搭建一个storm的集群 部署我们整套的系统, nginx , tomcat+java web 应用, mysql redis集群,独立的一套机器 storm集群,独立的一套机器 nginx,独立部署 tomcat + java web应用,独立部署 mysql,独立部署 十几个机器,去部署整套系统,在自己的笔记本电脑上来讲课的,这么玩儿撑不住的,4台虚拟机,每台虚拟机是1G的内存,电脑基本还能撑住 电脑本身就6个G内存的话,学习这种大型的系统架构的课程,是有点吃力

RAC1——Clusterware概念简介1

て烟熏妆下的殇ゞ 提交于 2020-02-12 21:05:19
一 集群环境下的一些特殊问题 1.1 并发控制 在集群环境中, 关键数据通常是共享存放的,比如放在共享磁盘上。 而各个节点的对数据有相同的访问权限, 这时就必须有某种机制能够控制节点对数据的访问。 Oracle RAC 是利用DLM(Distribute Lock Management) 机制来进行多个实例间的并发控制。 1.2 健忘症(Amnesia) 集群环境配置文件不是集中存放的,而是每个节点都有一个本地副本,在集群正常运行时,用户可以在任何节点更改集群的配置,并且这种更改会自动同步到其他节点。 有一种特殊情况: 节点A 正常关闭, 在节点B上修改配置, 关闭结点B,启动结点A。 这种情况下,修改的配置文件是丢失的, 就是所谓的健忘症。 1.3 脑裂(Split Brain) 在集群中,节点间通过某种机制(心跳)了解彼此的健康状态,以确保各节点协调工作。 假设只有"心跳"出现问题, 各个节点还在正常运行, 这时,每个节点都认为其他的节点宕机了, 自己是整个集群环境中的"唯一建在者",自己应该获得整个集群的"控制权"。 在集群环境中,存储设备都是共享的, 这就意味着数据灾难, 这种情况就是"脑裂" 解决这个问题的通常办法是使用投票算法(Quorum Algorithm). 它的算法机理如下: 集群中各个节点需要心跳机制来通报彼此的"健康状态",假设每收到一个节点的"通报

容器化技术介绍(kubernetes与docker)

徘徊边缘 提交于 2020-02-10 19:56:13
容器化技术介绍(kubernetes与docker) 一、docker 二、kubernetes 三、kubernetes集群环境搭建 一、docker 伴随着计算机技术的飞速发展,容器化技术现在越来越火,而Docker无疑是其中的明星产品,目前Docker 在国内特别是在一线互联网公司发展的如火如荼,Docker 的使用已经是十分普遍了。 Docker是基于Linux内核的Cgroup和namespace,以及AUFS类的Union FS等技术,对进程进行了封装隔离的技术。它属于操作系统层面的虚拟化技术。 传统虚拟化技术是虚拟出一套硬件后,在其基础上运行一个完整的操作系统,再在此系统上运行所需的应用进程。而Docker技术是容器内的应用进程直接运行于宿主机的内核,容器内没有自己的内核,而且也不虚拟出硬件。因此,相对于传统的虚拟化技术而言,Docker更加轻便。 Docker容器具有以下的优势: (1)更高效地利用系统资源; (2)更快捷的启动时间; (3)一致的运行环境; (4)支持持续交付和部署; (5)更轻松的迁移应用; (6)更轻松的维护和扩展。 Docker使用客户端—服务器(C/S)架构模式,使用远程API来管理和创建Docker容器。在Docker中,用三个基本概念需要了解: (1)Docker镜像:Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序