容器

是时候考虑让你的 Spark 跑在K8s 上了

泪湿孤枕 提交于 2020-01-24 03:18:16
原文链接:https://mp.weixin.qq.com/s/RT7QNQNQ0NRsAmwUMtw6ig 编者荐语: Spark社区从2.3版本开始,已经可以很好的支持跑着Kubernetes上了。这对于统一资源池,提高整体资源利用率,降低运维成本(特别是技术栈归一)有着非常大的帮助。这些趋势是一个大数据人不得不重视的信号,所以一起提前了解并考虑起来吧! 以下文章来源于容器魔方 ,作者tsjsdbd 大数据邂逅云计算 相信玩Spark的你已经注意到最新的Spark版本已经支持不做任何修改就可以直接跑在K8s上了,即以Kubernetes容器集群作为Cluster Manager的实现。 其实早在2017年底Spark 2.2版本开始的时候,Spark社区就开始合入用K8s管理Spark集群的能力,只是那时候功能上还没有很完善。加之彼时Kubernetes还没有像现在这么普及,被广泛地接受成为应用基础设施层。经过了2年了持续迭代,Spark on Kubernetes已经成为帅气的小伙,大家可以围观起来了。 其实,大数据和云计算一直分属两个不同的领域。大数据主要关注怎么将数据集中起来,挖掘数据的价值;云计算主要关注怎么更高效地使用资源,提升资源的利用效率。当大数据发展到一定阶段的时候,它就会和云计算不期而遇。 现状并不美丽 在技术层面上

快速理解什么是镜像、容器、docker、k8s

戏子无情 提交于 2020-01-24 02:55:28
写本文是自己对所掌握技术体系的一些俯瞰总结,初心以最简的解释来理解和概括这些概念,检验自己在对应领域的理解熟练度。 目录 对镜像的理解 容器是什么? Docker是什么?干什么用的? k8s又是做什么的? 对镜像的理解 可以理解为系统在某个时候的一个快照,是一组rootfs,一个不含内核的Linux文件系统,相比于一个虚拟机完整的磁盘镜像来说轻便的多。 创建镜像时基于联合挂载的方式创建出一套文件系统,Ubuntu中是aufs(Advance UnionFS)。联合挂载的目录下,有一个完整的操作系统目录供容器使用。 镜像分层概念(多增量rootfs联合挂载):镜像层(只读层)、容器层(读写层)、初始化层(init),每层对应包含了操作系统中一部分目录。Init 层是 Docker 项目单独生成的一个内部层,专门用来存放 /etc/hosts、/etc/resolv.conf等信息。 分层设计使得容器镜像需要的总空间缩小。 容器是什么? 首先,容器是一个进程,是一个特殊的进程。 可以把容器想象为一个沙盒,一个集装箱,能把你的应用装起来的一种技术。容器要把应用装起来那就需要边界,所谓的边界就是基于Linux Namespace(隔离)、Linux Cgroups(限制)、rootfs(文件系统)构建的隔离环境,是一种特殊的进程,其中Cgroups 技术是用来制造约束的主要手段,而

【c++】STL之set用法总结

こ雲淡風輕ζ 提交于 2020-01-24 02:11:26
介绍 set和multiset会根据特定准则将元素自动排序(从小到大)。两者的不同之处在于multiset允许元素重复而set不允许。 所以不能直接改变元素值,因为这样会打乱原本正确的顺序。因此要改变元素值必须先删除旧元素,再插入新元素。 C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Red-Black Tree)。RB树的统计性能要好于一般平衡二叉树,所以被STL选择作为了关联容器的内部结构。 用法 1 头文件 # include <set> 2 非更易型操作,用来查询大小互相比较 c.key_comp() c.value_comp() c.empty()——返回容器是否为空 c.size()——返回目前元素的个数 c.max_size()——返回元素个数之最大可能量 c1==c2 c1!=c2 … 3 查找 c.count(val)——返回元素值为val的元素个数,有些就没有count函数,比如vector之类的容器没有count c.find(val)——返回元素值为val的第一个元素,如果找不到就返回end() 4.迭代器 begin(); // 返回指向第一个元素的迭代器 end(); // 返回指向最后一个元素的迭代器 rbegin()

C++容器篇

若如初见. 提交于 2020-01-24 01:52:32
C++容器篇 一:vector向量(动态数组) 使用容器的步骤: 1.包含相关头文件 2.实例化一个对象 # include <iostream> # include <string> # include <vector> //包含相关头文件 using namespace std ; int main ( ) { //实例化对象分为有参和无参两种: //1.无参 vector < string > strVector ; //2.有参 vector < int > intVector ( 3 ) ; //动态数组的长度 return 0 ; } 1.有参实例化对象时,参数规定了向量的大小即动态数组的长度,这时进行插入时可以采用数组的方式进行插入。但是,需要注意的是当超过传入的容量后,只能通过成员函数的方式进行插入。 2.无参实例化对象时,只能通过成员函数的方式进行插入。 基本方法: (一):插入操作:push_back(); (尾部插入) (二):删除操作:pop_back(); (尾部删除) 万金油参数: (一)size();//当前容器数据个数 (二)empty();//当前容器是否为空 # include <iostream> # include <string> # include <vector> //包含相关头文件 using namespace std ; int

docker基础命令

拜拜、爱过 提交于 2020-01-24 00:59:10
1、安装docker 菜鸟教程无敌 ​​​​​​​ 2、启动docker sudo systemctl start docker 3.下载镜像 docker pull centos:7 4创建/删除 容器 docker run [OPTIONS] 镜像名:标签名 创建容器 [OPTIONS] 常用的参数说明: -i 表示交互式运行容器(就是创建容器后,马上会启动容器,并进入容器 ),通常与 -t 同时使用 。 -t 启动后会进入其容器命令行, 通常与 -i 同时使用; 加入 -it 两个参数后,容器创建就能登录进去。即 分配一个伪终端 。 --name 为创建的容器指定一个名称 。 -d 创建一个守护式容器在后台运行,并返回容器ID; 这样创建容器后不会自动登录容器,如果加 -i 参数,创建后就会运行容器。 -v 表示目录映射, 格式为: -p 宿主机目录:容器目录 注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。 -p 表示端口映射,格式为: -p 宿主机端口:容器端口 删除(如果容器在运行 先docker stop停止容器) ​​​​​​​docker rm 容器名称 | 容器ID 5、创建交互式容器(前提是先下载镜像) .创建一个交互式容器并取名为 mycentos , ( /bin/bash 是linux中的命令解析器,会进入到容器里面命令行) docker

浅谈Azure Storage的安全性

不问归期 提交于 2020-01-24 00:33:33
在今天的博文中我们将讨论Azure Storage的安全性以及如何使用共享访问签名(SAS)和存储的访问策略来控制对容器和Blob的访问。SAS基本上是带有查询参数的URI,该查询参数指定诸如到期时间,权限和签名等选项。我将在本文后面详细介绍这些内容。请注意,共享访问签名也可以与表和队列一起使用,但是我将仅在Blob存储方面进行讨论 什么是共享访问签名(SAS) 共享访问签名(SAS)是URI,它允许使用者在指定时间范围具有访问存储资源(例如blob或容器)所允许的权限。时间跨度和权限可以从存储的访问策略中得出,也可以在URI中指定。 可能有得朋友看到这里会提出我使用存储账户密钥就可以了,为什么要使用此功能?因为这允许客户端在不知道我们存储账户密钥的情况下访问存储帐户中的容器和Blob。从安全的角度考虑,如果将存储帐户密钥放在客户端应用程序中,则它可能会遭到******,并且可能会被他人窃取和使用,甚至会用感染了病毒的文件替换正常的文件。使用存储帐户密钥,对存储帐户的访问没有限制。在企业中的实际环境中,无限访问可能不是我们想看到的权限控制场景。 默认的容器权限 在控制对Blob存储的访问时,首先要使用容器权限。可以将blob存储中每个容器的权限设置为如下权限之一: Private:禁止公众访问Blob或容器 Blob:Blob的公共读取权限 Container

Docker镜像的分层结构

懵懂的女人 提交于 2020-01-24 00:17:35
Docker镜像的分层结构 一个docker镜像由多个可读的镜像层组成,然后运行的容器会在这个docker的镜像上面多加一层可写的容器层,任何的对文件的更改都只存在此容器层。因此任何对容器的操作均不会影响到镜像。 至于容器如何获取镜像层文件而又不影响到是镜像层的呢?docker是这样实现的? 如果需要获取某个文件,那么容器曾会从上到下去下一层的镜像层去获取文件,如果该层文件不存在,那么就会去下一镜像层去寻找,直到最后一层。 对于用户而言,用户面向的是一个叠加后的文件系统。 而任何对于文件的操作都会记录在容器层,例如说修改文件,容器层会把在镜像层找到的文件拷贝到容器层然后进行修改,删除文件则会在容器层内记录删除文件的记录。 总结: 对容器的任何改动都是发生在容器层的 容器层是可写可读的,而镜像层是只读的 来源: CSDN 作者: 南荣牧歌 链接: https://blog.csdn.net/qq_36929361/article/details/103796500

Window for Docker深入浅出

六眼飞鱼酱① 提交于 2020-01-23 23:43:39
docker简介 docker是一个基于go语言实现的开源容器。 docker可以使项目的部署变得简单,只要服务器上也安装了docker,那么就不需要再在上面安装类似于tomcat,mysql,jdk这些软件,直接将docker镜像部署到服务器上的docker即可正常运行。 docker容器和虚拟机的比较 虚拟机是独立于本地操作系统的一个新的操作系统,占有自己独立的内存,cpu等本地资源,而且操作系统本身也消耗大量的系统资源。如果虚拟机数量越多,那么每个虚拟机所能分配的系统资源就会被减少。使用虚拟机的好处是能够在一台服务器上实现多个操作系统并行的工作,比如window安装了虚拟机软件vmware,上面可以同时运行ubuntu,centos,window7、8、10等不同类型和版本的操作系统。 docker容器不是一个新的虚拟机,它不会占用独立的系统资源,它运行在本地操作系统之上,多个docker容器共享本地操作系统的资源。docker容器不是虚拟机,所以同一台机器上的所有docker容器只适用于本地操作系统环境。使用docker的好处是,docker不会创建一个新的系统,所以一个docker容器占用的资源比虚拟机要低很多。而且多个docker是共享本地操作系统资源的,不会出现因容器资源不够需要重新调整的情况,因为docker容器直接用的就是本地操作系统的资源

Spring容器IOC详细介绍

狂风中的少年 提交于 2020-01-23 02:25:49
Spring的IOC也就是控制反转,DI是基于IOC的基础上进行的 写过java的都知道:所有的对象都必须创建;或者说:使用对象之前必须先创 建。而使用ioc之后,你就可以不再手动创建对象,而是从ioc容器中直接获取对 象。 就好像我们无需考虑对象的销毁回收一样,因为java垃圾回收机制帮助我们实现 了这个过程;而ioc则是让我们无需考虑对象的创建过程,由ioc容器帮我们实现 对象的创建、注入等过程。 具体介绍如图: 来源: CSDN 作者: 六月·飞雪 链接: https://blog.csdn.net/z_ssyy/article/details/103785807

java-SpringIOC

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-23 01:55:40
一:IOC IOC(Inversion of Control) ,反转资源控制.容器主动地将资源推送到它所管理的组件,组件所需要做的仅仅是选择一种合适的方式来接受资源,翻转指的是获取对象的方式。 将创建对象,属性值的方式进行了翻转,从new,setXX()翻转成从IOC容器getbean。 二:DI 组件以一些预先定义好的方式接受来自容器的资源注入。 将属性值注入给了属性,将属性注入bean,将bean注入给了IOC容器。 三:BeanFactory、ApplicationContext Spring提供了两种类型的ioc实现,分别是BeanFactory和ApplicationContext。 BeanFactory IOC容器的基本实现,是Spring框架的基础设施,面向Spring本身。 ApplicationContext ApplicationContext提供了更多的高级特性,是BeanFactory的子接口。面向使用Spring框架的开发者,几乎所有应用场合都使用ApplicationContext,而不是BeanFactory。 //1.创建Spring的IOC容器对象 ApplicationContext ctx = new ClassPathXmlApplicationContext ( "applicationContent.xml" ) ; //2