Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,容器性能开销极低。
Docker 能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,开发者可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,可以大大减少编写代码和在生产环境中运行代码之间的延迟。
1.快速,一致地交付应用程序。Docker 允许开发人员使用应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。
2.响应式部署和扩展。Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。
3.在同一硬件上运行更多工作负载。Docker 轻巧快速,它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案。
HDFS(Hadoop Distributed File System),作为Google File System(GFS)的实现,是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。它所具有的高容错、高可靠性、高可扩展性、高获得性、高吞吐率等特征为海量数据提供了不怕故障的存储,为超大数据集(Large Data Set)的应用处理带来了很多便利。
HDFS由四部分组成,HDFS Client、NameNode、DataNode和Secondary NameNode。
HDFS是一个主/从(Mater/Slave)体系结构,HDFS集群拥有一个NameNode和一些DataNode。NameNode管理文件系统的元数据,DataNode存储实际的数据。
HDFS特点:高容错性、可构建在廉价机器上;适合批处理;适合大数据处理;流式文件访问。
HDFS局限:不支持低延迟访问;不适合小文件存储;不支持并发写入;不支持修改。
HDFS结构图
1.熟悉常用的Linux命令
2.熟悉Docker的安装和操作(对镜像的操作、对容器的操作、dockerfile文件简单使用)
3. 掌握HDFS的安装,基于Docker创建一主三从4个节点的HDFS集群。
Windows10专业版,Docker Desktop 4.5.1,CentOS7,Hadoop2.7.1
Docker 官方网站https://www.docker.com下载Docker Desktop for windows。安装过程与普通windows软件没有区别。
安装好后,出现如下界面
本实验中,可以不开启Hyper-V,可以不配置国内镜像。
导入2个image文件: Centos7-hadoop2.tar和spark_dave.tar. 导入命令 docker load -i 文件名 注意:文件名和路径中不可以中文。导入成功后,源tar文件可以删除。
顺序运行如下指令,创建4个Centos虚拟机,作为下一步HDFS的节点主机。
#创建master
docker run -d -it --privileged -P -p 50070:50070 -p 8888:8088 -p 8900:8080 --name master -h master --add-host slave01:172.17.0.3 --add-host slave02:172.17.0.4 --add-host slave03:172.17.0.5 centos7-hadoop2 /usr/sbin/init
#创建slave01
docker run -it -d -P --privileged --name slave01 -h slave01 --add-host master:172.17.0.2 --add-host slave02:172.17.0.4 --add-host slave03:172.17.0.5 centos7-hadoop2 /usr/sbin/init
#创建slave02
docker run -it -d -P --privileged --name slave02 -h slave02 --add-host slave01:172.17.0.3 --add-host master:172.17.0.2 --add-host slave03:172.17.0.5 centos7-hadoop2 /usr/sbin/init
#创建slave03
docker run -it -d -P --privileged --name slave03 -h slave03 --add-host slave01:172.17.0.3 --add-host slave02:172.17.0.4 --add-host master:172.17.0.2 centos7-hadoop2 /usr/sbin/init
创建成功后,Docker界面中出现4个虚拟机。如下图所示。
配置ssh的目的是:方便在master上统一对集群进行Hadoop部署。配置公钥和私钥的目的是:让集群主机之间的ssh登录不需要密码,否则每次都要输入密码。
#先打开四个终端窗口,分别执行以下命令,连接到四台机器
docker exec -it master /bin/bash
docker exec -it slave01 /bin/bash
docker exec -it slave02 /bin/bash
docker exec -it slave03 /bin/bash
# 在master上执行
su hdfs #切换到hdfs账号
ssh-keygen -t rsa #生成hdfs账号的key,
# 在master上执行,将master的公钥文件拷贝到slave节点和本机
ssh-copy-id master
ssh-copy-id slave01
ssh-copy-id slave02
ssh-copy-id slave03
向四台centos虚拟机分发HDFS配置文件。
docker exec master mv /usr/local/hadoop-2.7.1 /usr/local/hadoop
docker exec master chown -R hdfs:hdfs /usr/local/hadoop
docker exec master mv /usr/local/spark2.2.1 /usr/local/spark
docker exec master chown -R hdfs:hdfs /usr/local/spark
docker exec slave01 mv /usr/local/hadoop-2.7.1 /usr/local/hadoop
docker exec slave01 chown -R hdfs:hdfs /usr/local/hadoop
docker exec slave01 mv /usr/local/spark2.2.1 /usr/local/spark
docker exec slave01 chown -R hdfs:hdfs /usr/local/spark
docker exec slave02 mv /usr/local/hadoop-2.7.1 /usr/local/hadoop
docker exec slave02 chown -R hdfs:hdfs /usr/local/hadoop
docker exec slave02 mv /usr/local/spark2.2.1 /usr/local/spark
docker exec slave02 chown -R hdfs:hdfs /usr/local/spark
docker exec slave03 mv /usr/local/hadoop-2.7.1 /usr/local/hadoop
docker exec slave03 chown -R hdfs:hdfs /usr/local/hadoop
docker exec slave03 mv /usr/local/spark2.2.1 /usr/local/spark
docker exec slave03 chown -R hdfs:hdfs /usr/local/spark
# 在master上执行,将做好的配置文件(在/usr/local/dave_etc/目录下)拷贝到master和其他slave机器
cd /usr/local/dave_etc/
scp -r * master:/usr/local/hadoop/etc/hadoop
scp -r * slave01:/usr/local/hadoop/etc/hadoop
scp -r * slave02:/usr/local/hadoop/etc/hadoop
scp -r * slave03:/usr/local/hadoop/etc/hadoop
#切换用户
su hdfs
/usr/local/hadoop/bin/hdfs namenode -format
/usr/local/hadoop/sbin/start-dfs.sh # 会自动启动一主三从的相应服务
tar -zcvf /usr/local/hadoop/spark.tar.gz /usr/local/spark/ # 产生一个大文件
/usr/local/hadoop/bin/hdfs dfs -ls /
/usr/local/hadoop/bin/hdfs dfs -mkdir /test # 创建test目录
/usr/local/hadoop/bin/hdfs dfs -put /usr/local/hadoop/spark.tar.gz /test # 将刚压缩的文件上传到/test目录上
/usr/local/hadoop/bin/hdfs dfs -ls /test # 查看文件是否上传成功
访问访问http://localhost:50070主页,查看文件的存储细节
我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain
我有一个涉及多台机器、消息队列和事务的问题。因此,例如用户点击网页,点击将消息发送到另一台机器,该机器将付款添加到用户的帐户。每秒可能有数千次点击。事务的所有方面都应该是容错的。我以前从未遇到过这样的事情,但一些阅读表明这是一个众所周知的问题。所以我的问题。我假设安全的方法是使用两阶段提交,但协议(protocol)是阻塞的,所以我不会获得所需的性能,我是否正确?我通常写Ruby,但似乎Redis之类的数据库和Rescue、RabbitMQ等消息队列系统对我的帮助不大——即使我实现某种两阶段提交,如果Redis崩溃,数据也会丢失,因为它本质上只是内存。所有这些让我开始关注erlang和
导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc
我试图在rails中了解rubygems是如何变得可以自动使用的,而不是在使用required的文件中gem? 最佳答案 这是通过bundler/setup完成的:http://bundler.io/v1.3/bundler_setup.html.它在您的config/boot.rb文件中是必需的。简而言之,它首先将环境变量设置为指向您的Gemfile:ENV['BUNDLE_GEMFILE']||=File.expand_path('../../Gemfile',__FILE__)然后它通过要求bundler/setup将所有ge
从一开始,我就是一个Windows高手。我从MS-DOS开始。我安装了Windows2.1以及此后的所有Windows。现在,我家里有10台不同的Windows机器在运行,从Windows7Ultimate到各种版本的WindowsServer。我还没有完成Windows8,也不想去那里。我在服务器和各种软件方面都有UNIX经验,但它并不是我的首选环境。但是,我想我正在转换。我试图假装使用Cygwin和MSYS在Windows下运行UNIX。我的目的是搭建一个开发环境。两者都让我失望了。我花了比开发更多的时间来解决一系列技术问题。这是NotAcceptable。到目前为止,我的Ruby
我正在寻找用于Rails的优质管理插件。似乎大多数现有的插件/gem(例如“restful_authentication”、“acts_as_authenticated”)都围绕着self注册等展开。但是,我正在寻找一种功能齐全的基于管理/管理角色的解决方案——但不是简单地附加到另一个非基于角色的解决方案。如果我找不到,我想我会自己动手......只是不想重新发明轮子。 最佳答案 RyanBates最近做了两个关于授权的railscast(注意身份验证和授权之间的区别;身份验证检查用户是否如她所说的那样,授权检查用户是否有权访问资源