-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathalluxio.txt
349 lines (228 loc) · 19.8 KB
/
alluxio.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
http://www.alluxio.org/docs/1.8/cn/Overview.html
体验Alluxio最简单的方式是单机本地安装。在这个快速上手指南里,我们会引导你在本地机器上安装Alluxio,挂载样本数据,对Alluxio中的数据执行一些基本操作。具体来说,包括:
下载和配置Alluxio
验证Alluxio运行环境
本地启动Alluxio
通过Alluxio Shell进行基本的文件操作
[奖励] 挂载一个公开的Amazon S3 bucket到Alluxio上
关闭Alluxio
[奖励] 如果你有一个包含access key id和secret accsee key的AWS账户,你可以完成额外的任务。需要你AWS账户信息的章节都有**[奖励]**的标签。
注意 本指南旨在让你快速开始与Alluxio系统进行交互。Alluxio在大数据工作负载的分布式环境中表现最好。这些特性都难以适用于本地环境。如果你有兴趣运行一个更大规模的、能够突出Alluxio性能优势的例子,可以选择这两个白皮书中的任一个,尝试其中的指南:Accelerating on-demand data analytics with Alluxio、Accelerating data analytics on ceph object storage with Alluxio。
前期准备
为了接下来的快速上手指南,你需要:
Mac OS X或Linux
Java 8或更新版本
[奖励] AWS账户和秘钥
安装SSH(Mac OS X)
如果你使用Mac OS X,你必须能够ssh到localhost。远程登录开启方法:打开系统偏好设置,然后打开共享,确保远程登录已开启。
下载Alluxio
首先,下载Alluxio发布版本。你可以从Alluxio下载页面下载最新的兼容不同Hadoop版本的{{site.ALLUXIO_RELEASED_VERSION}}预编译版。
接着,你可以用如下命令解压下载包。取决于你下载的预编译二进制版本,你的文件名可能和下面有所不同。
tar -xzf alluxio-{{site.ALLUXIO_RELEASED_VERSION}}-bin.tar.gz
cd alluxio-{{site.ALLUXIO_RELEASED_VERSION}}
这会创建一个包含所有的Alluxio源文件和Java二进制文件的文件夹alluxio-{{site.ALLUXIO_RELEASED_VERSION}}。通过这个教程,这个文件夹的路径将被引用为${ALLUXIO_HOME}。
配置Alluxio
在开始使用Alluxio之前,我们需要配置它。大部分使用默认设置即可。
在${ALLUXIO_HOME}/conf目录下,根据模板文件创建conf/alluxio-site.properties配置文件。
cp conf/alluxio-site.properties.template conf/alluxio-site.properties
在conf/alluxio-site.properties文件中将 alluxio.master.hostname更新为你打算运行Alluxio Master的机器主机名。
echo "alluxio.master.hostname=localhost" >> conf/alluxio-site.properties
[奖励] AWS相关配置
如果你有一个包含access key id和secret accsee key的AWS账户,你可以添加你的Alluxio配置以备接下来与Amazon S3的交互。如下命令可以添加你的AWS访问信息到conf/alluxio-site.properties文件。
echo "aws.accessKeyId=<AWS_ACCESS_KEY_ID>" >> conf/alluxio-site.properties
echo "aws.secretKey=<AWS_SECRET_ACCESS_KEY>" >> conf/alluxio-site.properties
你必须将**<AWS_ACCESS_KEY_ID>替换成你的AWS access key id,将<AWS_SECRET_ACCESS_KEY>**替换成你的AWS secret access key。现在,Alluxio完全配置好了。
验证Alluxio运行环境
在启动Alluxio前,我们要保证当前系统环境下Alluxio可以正常运行。我们可以通过运行如下命令来验证Alluxio的本地运行环境:
./bin/alluxio validateEnv local
该命令将汇报在本地环境运行Alluxio可能出现的问题。如果你配置Alluxio运行在集群中,并且你想要验证所有节点的运行环境,你可以运行如下命令:
./bin/alluxio validateEnv all
我们也可以使用该命令运行某些特定验证项目。例如,
./bin/alluxio validateEnv local ulimit
将只运行验证本地系统资源限制方面的项目。
你可以在这里查看更多关于本命令的信息。
启动Alluxio
接下来,我们格式化Alluxio为启动Alluxio做准备。如下命令会格式化Alluxio的日志和worker存储目录,以便接下来启动master和worker。
./bin/alluxio format
现在,我们启动Alluxio!Alluxio默认配置成在localhost启动master和worker。我们可以用如下命令在localhost启动Alluxio:
./bin/alluxio-start.sh local SudoMount
恭喜!Alluxio已经启动并运行了!你可以访问http://localhost:19999查看Alluxio master的运行状态,访问http://localhost:30000查看Alluxio worker的运行状态。
使用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 /
-rw-r--r-- staff staff 26847 NOT_PERSISTED 01-09-2018 15:24:37:088 100% /LICENSE
输出显示LICENSE文件在Alluxio中,也包含一些其他的有用信息,比如文件的大小,创建的日期,文件的所有者和组,以及Alluxio中这个文件的占比。
你也可以通过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。
[奖励]Alluxio中的挂载
Alluxio通过统一命名空间的特性统一了对底层存储的访问。你可以阅读统一命名空间的博客和统一命名空间的文档获取更详细的解释。
这个特性允许用户挂载不同的存储系统到Alluxio命名空间中并且通过Alluxio命名空间无缝地跨存储系统访问文件。
首先,我们在Alluxio中创建一个目录作为挂载点。
./bin/alluxio fs mkdir /mnt
Successfully created directory /mnt
接着,我们挂载一个已有的S3 bucket样本到Alluxio。你可以使用我们提供的S3 bucket样本。
./bin/alluxio fs mount -readonly alluxio://localhost:19998/mnt/s3 s3a://alluxio-quick-start/data
Mounted s3a://alluxio-quick-start/data at alluxio://localhost:19998/mnt/s3
现在,S3 bucket已经挂载到Alluxio命名空间中了。
我们可以通过Alluxio命名空间列出S3中的文件。使用熟悉的lsshell命令列出S3挂载目录下的文件。
./bin/alluxio fs ls /mnt/s3
-r-x------ staff staff 955610 PERSISTED 01-09-2018 16:35:00:882 0% /mnt/s3/sample_tweets_1m.csv
-r-x------ staff staff 10077271 PERSISTED 01-09-2018 16:35:00:910 0% /mnt/s3/sample_tweets_10m.csv
-r-x------ staff staff 89964 PERSISTED 01-09-2018 16:35:00:972 0% /mnt/s3/sample_tweets_100k.csv
-r-x------ staff staff 157046046 PERSISTED 01-09-2018 16:35:01:002 0% /mnt/s3/sample_tweets_150m.csv
我们也可以在web UI上看见新挂载的文件和目录。
通过Alluxio统一命名空间,你可以无缝地从不同存储系统中交互数据。举个例子,使用lsshell命令,你可以递归地列举出一个目录下的所有文件。
./bin/alluxio fs ls -R /
-rw-r--r-- staff staff 26847 PERSISTED 01-09-2018 15:24:37:088 100% /LICENSE
drwxr-xr-x staff staff 1 PERSISTED 01-09-2018 16:05:59:547 DIR /mnt
dr-x------ staff staff 4 PERSISTED 01-09-2018 16:34:55:362 DIR /mnt/s3
-r-x------ staff staff 955610 PERSISTED 01-09-2018 16:35:00:882 0% /mnt/s3/sample_tweets_1m.csv
-r-x------ staff staff 10077271 PERSISTED 01-09-2018 16:35:00:910 0% /mnt/s3/sample_tweets_10m.csv
-r-x------ staff staff 89964 PERSISTED 01-09-2018 16:35:00:972 0% /mnt/s3/sample_tweets_100k.csv
-r-x------ staff staff 157046046 PERSISTED 01-09-2018 16:35:01:002 0% /mnt/s3/sample_tweets_150m.csv
输出显示了Alluxio文件系统根目录下来源于挂载的不同文件系统的所有文件。/LICENSE文件在本地文件系统,/mnt/s3/目录下是S3的文件。
[奖励]用Alluxio加速数据访问
由于Alluxio利用内存存储数据,它可以加速数据的访问。首先,我们看一看Alluxio中一个文件的状态(从S3中挂载)。
./bin/alluxio fs ls /mnt/s3/sample_tweets_150m.csv
-r-x------ staff staff 157046046 PERSISTED 01-09-2018 16:35:01:002 0% /mnt/s3/sample_tweets_150m.csv
输出显示了文件Not In Memory。该文件是微博的样本。我们看看有多少微博提到了单词“kitten”。使用如下的命令,我们可以统计含有“kitten”的tweet数量。
time ./bin/alluxio fs cat /mnt/s3/sample_tweets_150m.csv | grep -c kitten
889
real 0m22.857s
user 0m7.557s
sys 0m1.181s
取决于你的网络连接状况,该操作可能会超过20秒。如果读取文件时间过长,你可以选择一个小一点的数据集。该目录下的其他文件是该文件的更小子集。 如你所见,每个访问数据的命令都需要花费较长的时间。通过将数据放在内存中,Alluxio可以提高访问数据的速度。
在通过cat命令获取文件后,你可以用ls命令查看文件的状态:
./bin/alluxio fs ls /mnt/s3/sample_tweets_150m.csv
-r-x------ staff staff 157046046 PERSISTED 01-09-2018 16:35:01:002 100% /mnt/s3/sample_tweets_150m.csv
输出显示文件已经100%被加载到Alluxio中,既然如此,那么再次访问该文件的速度应该会快很多。
让我们来统计一下拥有“puppy”这个单词的微博的数目。
time ./bin/alluxio fs cat /mnt/s3/sample_tweets_150m.csv | grep -c puppy
1553
real 0m1.917s
user 0m2.306s
sys 0m0.243s
如你所见,读文件的速度非常快,仅仅需要数秒钟!并且,因为数据已经存放到了Alluxio中了,你可以轻易的以较快的速度再次读该文件。 现在让我们来统计一下有多少微博包含“bunny”这个词。
time ./bin/alluxio fs cat /mnt/s3/sample_tweets_150m.csv | grep -c bunny
907
real 0m1.983s
user 0m2.362s
sys 0m0.240s
恭喜!你在本地安装了Alluxio并且通过Alluxio加速了数据访问!
中止Alluxio
你完成了本地安装和使用Alluxio,你可以使用如下命令中止Alluxio:
./bin/alluxio-stop.sh local
总结
恭喜你完成了Alluxio的快速上手指南!你成功地在本地电脑上下载和安装Alluxio,并且通过Alluxio shell进行了基本的交互。这是一个如何上手Alluxio的简单例子。
除此之外还有很多可以学习。你可以通过我们的文档学到Alluxio的各种特性。你可以在你的环境中安装Alluxio,挂载你已有的存储系统到Alluxio,配置你的应用和Alluxio一起工作。浏览下方以获得更多信息。
部署Alluxio
Alluxio可以部署在很多不同的环境下。
本地运行Alluxio
在集群上独立运行Alluxio
在Virtual Box中运行Alluxio
在Docker中运行Alluxio
在EC2上运行Alluxio
在GCE上运行Alluxio
在EC2上使用Mesos运行Alluxio
在EC2上运行带容错机制的Alluxio
Alluxio与YARN整合运行
在YARN Standalone模式上运行Alluxio
底层存储系统
有很多可以通过Alluxio访问的底层存储系统。
Alluxio使用Azure Blob Store
Alluxio使用S3
Alluxio使用GCS
Alluxio使用Minio
Alluxio使用Ceph
Alluxio使用Swift
Alluxio使用GlusterFS
Alluxio使用MapR-FS
Alluxio使用HDFS
Alluxio使用Secure HDFS
Alluxio使用OSS
Alluxio使用NFS
框架和应用
不同的框架和应用和Alluxio整合。
Apache Spark使用Alluxio
Apache Hadoop MapReduce使用Alluxio
Apache HBase使用Alluxio
Apache Flink使用Alluxio
Presto 使用 Alluxio
Apache Hive 使用 Alluxio
Apache Zeppelin使用Alluxio
Alluxio(之前名为Tachyon)是世界上第一个以内存为中心的虚拟的分布式存储系统。它统一了数据访问的方式,为上层计算框架和底层存储系统构建了桥梁。 应用只需要连接Alluxio即可访问存储在底层任意存储系统中的数据。此外,Alluxio的以内存为中心的架构使得数据的访问速度能比现有方案快几个数量级。
在大数据生态系统中,Alluxio介于计算框架(如Apache Spark,Apache MapReduce,Apache HBase,Apache Hive,Apache Flink)和现有的存储系统(如Amazon S3,Google Cloud Storage, OpenStack Swift,GlusterFS,HDFS,MaprFS,Ceph,NFS,OSS)之间。 Alluxio为大数据软件栈带来了显著的性能提升。例如,百度采用Alluxio使他们数据分析流水线的吞吐量提升了30倍。 巴克莱银行使用Alluxio将他们的作业分析的耗时从小时级降到秒级。 去哪儿网基于Alluxio进行实时数据分析。 除性能外,Alluxio为新型大数据应用作用于传统存储系统的数据建立了桥梁。 用户可以以 独立集群模式,在例如 Amazon EC2, Google Compute Engine运行Alluxio, 或者用 Apache Mesos或 Apache Yarn安装Alluxio。
Alluxio与Hadoop是兼容的。现有的数据分析应用,如Spark和MapReduce程序,可以不修改代码直接在Alluxio上运行。Alluxio是一个已在多家公司部署的开源项目(Apache License 2.0)。 Alluxio是发展最快的开源大数据项目之一。自2013年4月开源以来,已有超过150个组织机构的 700多贡献者参与到Alluxio的开发中。包括 阿里巴巴, Alluxio, 百度, 卡内基梅隆大学,Google,IBM,Intel, 南京大学, Red Hat,UC Berkeley和 Yahoo。Alluxio处于伯克利数据分析栈 (BDAS)的存储层,也是 Fedora发行版的一部分。 到今天为止,Alluxio已经在超过100家公司的生产中进行了部署,并且在超过1000个节点的集群上运行着。
下 载 | 用户文档 | 开发者文档 | Meetup 小组 | Issue Tracking | Slack Channel | 用户邮件列表 | 视频 | Github | 版 本
现有功能
灵活的文件API Alluxio的本地API类似于java.io.File类,提供了 InputStream和OutputStream的接口和对内存映射I/O的高效支持。我们推荐使用这套API以获得Alluxio的最好性能。 另外,Alluxio提供兼容Hadoop的文件系统接口,Hadoop MapReduce和Spark可以使用Alluxio代替HDFS。
可插拔的底层存储 在容错方面,Alluxio备份内存数据到底层存储系统。Alluxio提供了通用接口以简化插入 不同的底层存储系统。目前我们支持Microsoft Azure Blob Store,Amazon S3,Google Cloud Storage,OpenStack Swift,GlusterFS, HDFS,MaprFS,Ceph,NFS,Alibaba OSS,Minio以及单节点本地文件系统,后续也会支持很多其它的文件系统。
Alluxio存储 Alluxio可以管理内存和本地存储如SSD 和HDD,以加速数据访问。如果需要更细粒度的控制,分层存储功能可以用于自动管理不同层之间的数据,保证热数据在更快的存储层上。 自定义策略可以方便地加入Alluxio,而且pin的概念允许用户直接控制数据的存放位置。
统一命名空间 Alluxio通过挂载功能在不同的存储系统之间实 现高效的数据管理。并且,透明命名在持久化这些对象到底层存储系统时可以保留这些对象的文件名和目录层次结构。
网页UI & 命令行 用户可以通过网页UI浏览文件 系统。在调试模式下,管理员可以查看每一个文件的详细信息,包括存放位置,检查点路径等等。用户也可以通 过./bin/alluxio fs与Alluxio交互,例如:将数据从文件系统拷入拷出。
快速入门
如果要快速地架设alluxio并运行,请阅读快速入门页面,该页面描述了如何部署Alluxio并 在本地环境下运行几个基本的样例。 查看使用 Alluxio 的公司名单。
下载
你可以从Alluxio下载页面获取已发布版本。每个版本都是由已编译二进制文件组成,与各种Hadoop版本兼容。如果你想从源码编译生成Alluxio,请前往 从Master分支构建Alluxio。如果你有任何疑问,请联系我们 用户邮箱列表。 对于无法使用Google Group的用户,请使用它的mirror (注意:该镜像可能不包含2016年五月份以前的信息)。
Alluxio 常见问题
什么是Alluxio?
Alluxio(之前名为Tachyon),是一个开源的具有内存级速度的虚拟分布式存储系统, 使得应用程序可以以内存级速度与任何存储系统中的数据进行交互。
Alluxio可以运行在哪些平台和Java版本上?
Alluxio可以在Linux / Mac的各种发行版上使用Java 1.8或更高版本运行。
是否有简单的方法来查看群集的状态和运行状况?
是的,一旦安装好Alluxio,可以通过访问http://master_ip:19999的UI界面来查看。
如果向集群添加新节点,为了平衡节点之间的内存空间利用率,Alluxio是否会进行重新平衡(即将缓存的块移动到新节点)?
否,当前还未实现对数据块的重新平衡。
Alluxio master节点是否具备容错能力?
是的。请参考此页。
什么是底层存储系统?Alluxio支持多少种底层存储系统?
Alluxio 使用底层存储系统作为其持久化存储系统,当前支持 Amazon S3, Swift, GCS, HDFS以及很多其他存储系统。
是否可以支持其他底层存储系统?
可以,事实上许多Alluxio贡献者正在进行相关工作以支持其他底层存储系统。请参考该文档。
Alluxio使用何种语言进行开发?
Alluxio主要使用Java语言进行开发,并为其他应用程序提供类似Java文件的API以进行交互。而我们也正在进行对其他语言的绑定工作。
如果数据集不适合存储在内存中该怎么办?
这取决于系统设置。Alluxio 会使用本地SSD和HDD进行存储,热数据被保存在Alluxio中而冷数据被保存在底层存储系统中。 可以在此阅读有关Alluxio存储设置的更多信息。
Alluxio可以作为一个单机系统运行以进行实验和验证吗?
是的,Alluxio可以作为一个单机系统运行。这里是操作指南。
Alluxio可以以集群模式运行吗?
是的,Alluxio可以以集群模式运行。这里是操作指南。
Alluxio必须在HDFS上运行吗?
不是的,Alluxio可以运行在不同的底层存储系统上,如HDFS,Amazon S3,Swift和GlusterFS等。
Alluxio可以和其他框架一起工作吗?
是的, Alluxio 可以和Spark, Flink, Hadoop, HBase, Hive等框架一起工作。
如何了解Alluxio更多相关信息?
可以阅读近期的博客 和介绍。
Alluxio是否有meetup等活动?
是的,我们已经为Alluxio发起了meetup组织,请加入http://www.meetup.com/Alluxio/。 也可以通过这里找到更多Alluxio相关的活动。
Alluxio使用什么许可证?
Alluxio使用Apache 2.0许可证。
如何为Alluxio贡献代码?
非常感谢您的关注。您可以查看[如何贡献代码]({{ '/cn/contributor/Contributor-Getting-Started.html' | relativize_url }})。
在哪里可以报告问题或提出新功能?
我们使用Github Issues来跟进开发过程和相关问题。如果您想报告问题或提出新功能,请将其发布到Github Issues上。
在哪里可以获取更多的帮助?
对于任何与安装、代码贡献和评价相关的问题,请加入我们的 Alluxio社区Slack频道或者 发送邮件到Alluxio 用户邮件列表。 我们期待在那儿与您探讨。