信息存储

HDFS读写原理

ぃ、小莉子 提交于 2019-11-28 12:32:41
Hadoop 是什么 Hadoop 是一个开源的大数据框架同时也是一个分布式计算的解决方案。Hadoop = HDFS (分布式文件系统)+MapReduce(分布式计算) HDFS HDFS 概念 数据块 NameNode DataNode 数据块: 数据块是一个抽象的块,而不是整个文件。默认大小是64Mb,一般设置为128Mb,备份x3 数据块的大小可以随着磁盘传输速率的提升而得到增加。 HDFS的块比磁盘的大,主要是减少寻址时间在整个文件传输时间中的占比。比如为了让磁盘寻址时间只占到整个文件传输时间的1%,而寻址时间为10ms,磁盘的IO传输速率为100Mb/s,那么一个块的大小要大于100Mb才能达到这个要求。随着以后磁盘的传输速率越来越高,块的大小也会越来越大的。 【但是块的大小也不会很大,因为MapReduce中的map任务一次只处理一个块的数据,如果map任务过少(少于集群的节点数量),作业的运行效率也会比较慢】 对数据块进行抽象的好处: 一个文件的大小可以大于集群网络中任一个磁盘的大小。因为可以对文件进行分块存储,所以在一种极端情况下,一个集群只存放了一个文件,该文件占满了集群中的所有磁盘。 使用抽象块而不是整个文件作为存储单元,可以简化存储子系统的设计。首先块的大小是固定的,所以一个磁盘能够存储多少个块很容易就能够计算出来。另外也消除了对于元数据的顾虑

Python操作es

被刻印的时光 ゝ 提交于 2019-11-28 08:45:18
操作几个方面 结果过滤,对于返回结果做过滤,主要是优化返回内容。 直接操作elasticsearch对象,处理一些简单的索引信息。一下几个方面都是建立在es对象的基础上。 Indices,关于索引的细节操作,比如创建自定义的mappings。 Cluster,关于集群的相关操作。 Nodes,关于节点的相关操作。 Cat API,换一种查询方式,一般的返回都是json类型的,cat提供了简洁的返回结果。 Snapshot,快照相关,快照是从正在运行的Elasticsearch集群中获取的备份。我们可以拍摄单个索引或整个群集的快照,并将其存储在共享文件系统的存储库中,并且有一些插件支持S3,HDFS,Azure,Google云存储等上的远程存储库。 Task Management API,任务管理API是新的,仍应被视为测试版功能。API可能以不向后兼容的方式更改。 结果过滤 filter_path参数用于过滤减少es返回信息,可以指定返回相关的内容,还支持一些通配符的操作* 1 body = { 2 "query": { 3 "match": { 4 "name": "成都" 5 } 6 } 7 } 8 # print(es.search(index="p1", body=body)) 9 print(es.search(index="p1", body=body, filter

Kubernetes 上安装 EMQ X 系列文章之三 :使用 Helm 管理、部署 EMQ X 集群

血红的双手。 提交于 2019-11-28 07:49:48
Helm 介绍 **Helm 是管理 Kubernetes 包的工具,Helm 能提供下面的能力: 创建新的 charts 将 charts 打包成 tgz 文件 与 chart 仓库交互 安装和卸载 Kubernetes 的应用 管理使用 Helm 安装的 charts 的生命周期 **在 Helm 中,有三个需要了解的重要概念: chart:是创建Kubernetes应用实例的信息集合; config:创建发布对象的chart的配置信息 release:chart的运行实例,包含特定的config Helm 组件 在 Helm 中有两个主要的组件,既 Helm 客户端和 Tiller 服务器: Helm 客户端 :这是一个供终端用户使用的命令行工具,客户端负责如下的工作: 本地 chart 开发 管理仓库 与 Tiller 服务器交互 发送需要被安装的 charts 请求关于发布版本的信息 请求更新或者卸载已安装的发布版本 Tiller 服务器 : Tiller 服务部署在 Kubernetes 集群中,Helm 客户端通过与 Tiller 服务器进行交互,并最终与 Kubernetes API 服务器进行交互。 Tiller 服务器负责如下的工作: 监听来自于 Helm 客户端的请求 组合 chart 和配置来构建一个发布 在 Kubernetes 中安装,并跟踪后续的发布

GlusterFS 存储

試著忘記壹切 提交于 2019-11-28 06:24:16
GlusterFS简介: 互联网四大开源分布式文件系统分别是:MooseFS、CEPH、Lustre、GusterFS. GluterFS最早由Gluster公司开发,其目的是开发一个能为客户提供全局命名空间、分布式前端及高达数百PB级别扩展性的分布式文件系统。 相比其他分布式文件系统,GlusterFS具有高扩展性、高可用性、高性能、可横向扩展等特点,并且其没有元数据服务器 的设计,让整个服务没有单点故障的隐患。 常见的分布式文件系统简介: 1、MooseFS   MooseFS主要由管理服务器(master)、元日志服务器(Metalogger)、数据存储服务器(chunkserver)构成。 管理服务器:主要作用是管理数据存储服务器,文件读写控制、空间管理及节点间的数据拷贝等。 元日志服务器:备份管理服务器的变化日志,以便管理服务器出问题时能恢复工作。 数据存储服务器:听从管理服务器调度,提供存储空间,接收或传输客户数据等。 MooseFS的读过程如图所示: 总结:MooseFS结构简单,适合初学者理解分布式文件系统的工作过程,但MooseFS具有单点故障隐患,一旦master无法工作,整个分布式文件系统 都将停止工作,因此需要实现master服务器的高可用(比如heartbeat+drbd实现) 2、Lustre   Lustre 是一个比较典型的高性能面向对象的文件系统

JWT的详细简介

♀尐吖头ヾ 提交于 2019-11-28 05:31:41
1. JSON Web Token是什么 JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。 2. 什么时候你应该用JSON Web Tokens 下列场景中使用JSON Web Token是很有用的: Authorization (授权) : 这是使用JWT的最常见场景。一旦用户登录,后续每个请求都将包含JWT,允许用户访问该令牌允许的路由、服务和资源。单点登录是现在广泛使用的JWT的一个特性,因为它的开销很小,并且可以轻松地跨域使用。 Information Exchange (信息交换) : 对于安全的在各方之间传输信息而言,JSON Web Tokens无疑是一种很好的方式。因为JWTs可以被签名,例如,用公钥/私钥对,你可以确定发送人就是它们所说的那个人。另外,由于签名是使用头和有效负载计算的,您还可以验证内容没有被篡改。 3. JSON Web Token的结构是什么样的 JSON Web Token由三部分组成,它们之间用圆点(.)连接。这三部分分别是: Header Payload Signature 因此,一个典型的JWT看起来是这个样子的: xxxxx.yyyyy.zzzzz 接下来,具体看一下每一部分:

2019-2020-1学期 20192415 《网络空间安全专业导论》第八周学习总结

老子叫甜甜 提交于 2019-11-28 05:10:28
2019-2020-1学期 20192415 《网络空间安全专业导论》第八周学习总结 第一章 网络空间安全概述 第二章 物理安全 第六章 数据安全 主要内容: 数据安全范畴 数据的保密性 数据存储技术 数据备份和恢复技术 6.1 概述 数据的全生命周期管理过程:创建→存储→访问→传输→使用→销毁 数据泄露主要原因:黑客通过网络攻击,木马、病毒窃取,设备丢失或被盗,使用管理不当等。 6.2 数据安全范畴 数据安全:保障数据的 合法持有和使用者 能够在 任何需要该数据时 获得 保密的、没有被非法更改过 的 纯原始数据 。 (一)要素 保密性(Confidentiality):具有一定保密程度的数据只能让有权读到或更改的人进行读取和更改。 完整性(Integrity):在存储或传输的过程中,原始的数据不能被随意更改。 可用性(Availability):对于该数据的合法拥有和使用者,在他们需要这些数据的任何时候,都应该确保他们能够及时得到所需要的数据。 例:多处备份 (二)组成 1.数据本身的安全:主要是指采用现代密码算法对数据进行主动保护。 如:数据保密、数据完整性、双向身份认证 2.数据防护的安全:主要是指采用现代信息存储手段对数据进行主动防护。 如:磁盘阵列、数据备份、异地容灾 数据本身的安全是基于可靠的加密算法与安全体系,如:对称加密、非对称加密方式 3.数据处理的安全

五、网站的高可用架构

时光怂恿深爱的人放手 提交于 2019-11-28 03:10:39
   5.1 网站可用性的度量与考核      网站的可用性描述网站可有效访问的特性。     网站的页面能完整呈现在用户面前,需要经过很多环节,任何一个环节出问题,都会导致网站页面不可访问。     DNS会被劫持、CDN服务可能会挂掉、网站服务器可能会宕机、网站交换机可能会失效、硬盘会损坏、网卡会松掉、机房会停电、空调会失灵、程序会有Bug、黑客会攻击、促销引来大量的访问、第三方合作伙伴的服务不可用.....   5.2 高可用的网站架构       网站高可用架构设计的主要目的就是保证服务器硬件故障时服务依然可用、数据依然保存并能够被访问。     实现上述高可用架构的主要手段是数据和服务的冗余备份及失效转移,一旦某些服务器宕机,就将服务切换到其他可用的服务器上,如果磁盘损坏,则从备份的磁盘读取数据。     一个典型的网站设计通常遵循如下图所示的基本分层架构模型   典型的分层模型是三层,即应用层、服务层、数据层;各层之间具有相对独立性,应用层主要负责具体业务逻辑处理;服务层负责提供可复用的服务;数据层负责数据的存储与访问。        不同的业务产品会部署在不同的服务器集群上,如某网站的文库、贴吧、百科等属于不同的产品,部署在各自独立的服务器集群上,互不相干。这些产品又会依赖一些共同的复用业务,如注册登录服务、Session 管理服务、账户管理服务等

云计算 大数据 人工智能

懵懂的女人 提交于 2019-11-28 03:08:23
一、 互联网行业及云计算 在互联网时代,技术是推动社会发展的驱动,云计算则是一个包罗万象的技术栈集合,通过网络提供IAAS、PAAS、SAAS等资源,涵盖从数据中心底层的硬件设置到最上层客户的应用。给我们工作生活提供服务! 1、互联网大事记 1936年 英国数学家A.M.Turing发明图灵机,为现代计算机硬件和软件做了理论上的准备。艾伦·麦席森·图灵(Alan Mathison Turing,1912年6月23日-1954年6月7日),英国数学家、 逻辑学家 ,被称为计算机科学之父, 人工智能 之父。 1945年 现代计算机之父: 冯·诺依曼 第一次提出 存储程序 计算机的概念,即“冯·诺依曼机器”。 1972年 Bell实验室的Dennis Ritchie开发出 C语言 1973年 法国Luminy-Marseilles 大学的Alain Colmerauer 开发了 Prolog语言 。 马丁·库珀发明手机,成为第一个使用移动电话的人。 1975年 比尔·盖茨 和保罗·艾伦为牛郎星开发了世界上第一套标准的微电脑软件Basic,并创办了Microsoft公司。 Xerox和 斯坦福大学 联合推出“ 以太网 ”(Ethernet)。该网络成为局域网的第一个工业标准产品。 1987年 中国第一封国际电子邮件发出,中国开启了互联网的大门。 1997年 IBM“深蓝”机上的国际象棋软件

Hadoop(四)HDFS集群详解

五迷三道 提交于 2019-11-28 01:22:10
前言   前面几篇简单介绍了什么是大数据和Hadoop,也说了怎么搭建最简单的伪分布式和全分布式的hadoop集群。接下来这篇我详细的分享一下HDFS。   HDFS前言:     设计思想:(分而治之) 将大文件、大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析。     在大数据系统中作用: 为各类分布式运算框架(如:mapreduce,spark,tez,……)提供数据存储服务 。   分布式文件系统:     问题引发:海量数据超过了单台物理计算机的存储能力     解决方案:对数据分区存储与若干台物理主机中     分布式文件系统应运而生:             1)管理网络中跨多台计算机存储的文件系统             2)HDFS就是这样的一个分布式文件系统 一、HDFS概述 1.1、HDFS概述   1)HDFS集群分为两大角色: NameNode、DataNode   2)NameNode负责 管理整个文件系统的元数据   3)DataNode负责 管理用户的文件数据块   4)文件会 按照固定的大小(blocksize)切成若干块后分布式存储在若干台datanode上   5)每一个 文件块可以有多个副本,并存放在不同的datanode 上   6)DataNode会定期向NameNode汇报 自身保存的block信息

MySQL简单的存储图片信息

假装没事ソ 提交于 2019-11-27 23:52:35
MySQL存储图片的二进制,其字段设置为blob属性,二进制数据 1、连接数据库 1 import pymysql 2 import sys 3 4 conn=pymysql.connect(host='localhost',user='root',passwd='xxx',db='mydata') 2、打开存储图片路径 1 fp = open("./1.jpg") 2 img = fp.read() 3 fp.close() 3、存储图片 1 def insert_imgs(img): 2 # mysql连接 3 4 cursor = conn.cursor() 5 # 注意使用Binary()函数来指定存储的是二进制 6 # cursor.execute("insert into img set imgs='%s'" % mysql.Binary(img)) 7 cursor.execute("Insert into img(imgs) values(%s)", (mysql.Binary(img))) 8 # 如果数据库没有设置自动提交,这里要提交一下 9 conn.commit() 10 cursor.close() 11 # 关闭数据库连接 12 conn.close() 4、提取图片 1 def select_imgs(img): 2 cursor=conn