Alluxio初探

前几天参加TALKINGDATA的T11峰会,发现了一个好东西,Alluxio。
Alluxio is a memory speed virtual distributed storage system.Alluxio是一个开源的基于内存的分布式存储系统,现在成为开源社区中成长最快的大数据开源项目之一。

公司简介:
由项目的创建者李浩源以及来自UC Berkeley, Google, CMU, Palantir, Stanford, Yahoo等不同公司和学校的项目核心开发者组成。
完成750万 dollars 的A轮融资,由Andreessen Horowitz投资(硅谷最著名的VC之一,主要成员为网景公司创始人之一)。

背景介绍:
2012年诞生于UC Berkeley AMPLab,此前这个实验室孵化了Apache Mesos和Apache Spark等著名开源项目。
2013年4月开源,现在由最初的Tachyon改名为Alluxio,基于Apache License 2.0开源标准,最新版本为Version 1.0 (Feb 23rd, 2016)
这里写图片描述
在分布式系统的开源项目中,相比于同级别项目,Alluxio的增长非常迅速
这里写图片描述

主要特性:
数据存储与计算分离,两部分引擎可以进行独立的扩展。计算引擎(如Hadoop, Spark)可以访问不同数据源(Amazon S3, HDFS)中的数据。

问题:与Redis,Memcached等分布式in-memory key-value缓存的的区别:

答:(1) Alluxio可以同时管理多个底层文件系统,将不同的文件系统统一在同一个名称空间下,让上层客户端可以自由访问统一名称空间内的不同路径,不同存储系统的数据。(2)Alluxio提供文件接口,并存储且维护文件的metadata(比如记录文件分成哪几个block, 每一个block在哪台server上)。并提供fault tolerance的metadata服务。而Redis/Memcached为Nosql的key-value分布式缓存,并不提供文件接口。

更详细的介绍,可参见知乎介绍
https://zhuanlan.zhihu.com/p/20624086

使用介绍:
1.项目信息
http://www.alluxio.org/ 难能的是DOC有中文。

2.安装配置
安装SSH(Mac OS X)
如果你使用Mac OS X,你必须能够ssh到localhost。远程登录开启方法:打开系统偏好设置,然后打开共享,确保远程登录已开启。

2.1下载Alluxio
首先,下载Alluxio发布版本。你可以从Alluxio下载页面下载最新的兼容不同Hadoop版本的1.2.0预编译版。
接着,你可以用如下命令解压下载包。取决于你下载的预编译二进制版本,你的文件名可能和下面有所不同。

$ tar -xzf alluxio-1.2.0-bin.tar.gz
$ cd alluxio-1.2.0

这会创建一个包含所有的Alluxio源文件和Java二进制文件的文件夹alluxio-1.2.0。

2.2配置Alluxio
在开始使用Alluxio之前,我们需要配置它。大部分使用默认设置即可。
从模板文件创建conf/alluxio-env.sh配置文件。也可以通过如下命令创建配置文件:

$ ./bin/alluxio bootstrapConf localhost

2.3启动Alluxio
接下来,我们格式化Alluxio为启动Alluxio做准备。如下命令会格式化Alluxio的日志和worker存储目录,以便接下来启动master和worker。

$ ./bin/alluxio format

现在,我们启动Alluxio!Alluxio默认配置成在localhost启动master和worker。我们可以用如下命令在localhost启动Alluxio:

$ ./bin/alluxio-start.sh local
恭喜!Alluxio已经启动并运行了!你可以访问http://localhost:19999查看Alluxio master的运行状态,访问http://localhost:30000查看Alluxio worker的运行状态。

2.4使用Alluxio Shell
既然Alluxio在运行,我们可以通过Alluxio shell检查Alluxio文件系统。Alluxio shell包含多种与Alluxio交互的命令行操作。你可以通过如下命令调用Alluxio shell:

$ ./bin/alluxio fs

该命令将打印可用的Alluxio命令行操作。
你可以通过ls命令列出Alluxio里的文件。比如列出根目录下所有文件:

$ ./bin/alluxio fs ls /

可惜现在Alluxio里没有文件。我们可以拷贝文件到Alluxio。copyFromLocal命令可以拷贝本地文件到Alluxio中。

$ ./bin/alluxio fs copyFromLocal LICENSE /LICENSE
Copied LICENSE to /LICENSE

拷贝LICENSE文件之后,我们可以在Alluxio中看到它。列出Alluxio里的文件:

$ ./bin/alluxio fs ls /
26.22KB   06-20-2016 11:30:04:415  In Memory      /LICENSE

输出显示LICENSE文件在Alluxio中,也包含一些其他的有用信息,比如文件的大小,创建的日期,文件的in-memory状态。
你也可以通过Alluxio shell来查看文件的内容。cat命令可以打印文件的内容。

$ ./bin/alluxio fs cat /LICENSE
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
...

默认设置中,Alluxio使用本地文件系统作为底层文件系统(UFS)。默认的UFS路径是./underFSStorage。我们可以查看UFS中的内容:

$ ls ./underFSStorage/

然而,这个目录不存在!这是由于Alluxio默认只写入数据到Alluxio存储空间,而不会写入UFS。
但是,我们可以告诉Alluxio将文件从Alluxio空间持久化到UFS。shell命令persist可以做到。

$ ./bin/alluxio fs persist /LICENSE
persisted file /LICENSE with size 26847

现在,如果我们再次检查UFS。文件出现了。

$ ls ./underFSStorage
LICENSE

如果我们在master webUI中浏览Alluxio文件系统,我们可以看见LICENSE文件以及其它有用的信息。这里,Persistence State栏显示文件为PERSISTED。

2.5 总结

Alluxio的使用场景:如果你感觉在spark或者其他Hadoop的上层应用去操作hdfs的时候性能不理想,可以在应用和底层文件之间加入这个内存级别的框架,或者简单我们理解为缓存,其实这层的操作和hdfs的操作极为相似,对上层的影响很小,性能应该会有比较明显的提升。

国内很多厂商已经在使用了,比如华为等知名企业,而且目前已经支持了阿里的OSS,感觉这个产品的切入点很好,大家应该持续关注一下。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值