Alluxio的安装部署

Alluxio的安装部署

快速上手指南 - Alluxio v2.6.2 (stable) Documentation

开发指南 - Alluxio v2.6.2 (stable) Documentation

部署 Alluxio - 在集群上独立运行Alluxio - 《Alluxio 社区版 v2.0官方文档》 - 书栈网 · BookStack

首先要确定部署的环境,可以选择部署在本地、集群、AWS等。即要选择Alluxio的底层存储,是使用本地的文件系统、HDFS、S3等。

提示:可以从 Alluxio 下载页面获取已发布版本。 每个Alluxio发布版本都提供了与不同 Hadoop 版本兼容的预编译好的二进制文件。 从 Master 分支构建 Alluxio页面解释了如何从源代码编译生成Alluxio项目。

1. 基本要求

下面是在本地或集群模式下运行Alluxio的基本要求:

  • 集群节点需要运行在以下操作系统之一:
    • MacOS 10.10或更高版本
    • CentOS - 6.8 或 7
    • RHEL - 7.x
    • Ubuntu - 16.04
  • Alluxio需要JDK 8。 不支持更高版本:
    • Java JDK 8(Oracle或OpenJDK发行版都支持)
  • Alluxio仅支持IPv4网络协议
  • 开放以下端口和协议
    • Inbound TCP 22 - 以用户身份ssh进入指定节点上安装Alluxio组件。
Master要求

下面是运行Alluxio Master进程的集群节点所需要的配置。

注意这些是运行最低要求。 大规模高负载下运行Alluxio相应系统要求会随之增加。

  • 最少4 GB硬盘空间
  • 最少4 GB内存
  • 最少4个CPU核
  • 开放以下端口和协议:
    • Inbound TCP 19998-Alluxio master的默认RPC端口
    • Inbound TCP 19999-Alluxio master的默认web UI端口:http://<master-hostname>:19999
    • Inbound TCP 20001-Alluxio job master的默认RPC端口
    • Inbound TCP 20002-Alluxio job master的默认网络UI端口
    • Embedded Journal要求
      • Inbound TCP 19200-Alluxio master用于内部leader选举的默认端口
      • Inbound TCP 20003-Alluxio job master用于内部leader选举的默认端口
Worker要求

下面是运行Alluxio Worker进程的集群节点所需要的配置。

  • 最小1 GB硬盘空间
  • 最少1 GB内存
  • 最少2个CPU核
  • 开放以下端口和协议:
    • Inbound TCP 29999-Alluxio worker的默认RPC端口
    • Inbound TCP 30000-Alluxio worker的默认网络UI端口:http://<worker-hostname>:30000
    • Inbound TCP 30001-Alluxio job worker的默认RPC端口
    • Inbound TCP 30002-Alluxio job worker的默认数据端口
    • Inbound TCP 30003-Alluxio job worker的默认网络UI端口:http://<worker-hostname>:30003
Worker Cache

需要为Alluxio Workers配置作为缓存的存储空间。 默认情况下Alluxio为Worker提供一个RAMFS,但是可以对其进行修改以使用其他存储卷的。 通过在alluxio.worker.tieredstore.level%d.dirs.path中提供其他目录,用户可以指定Alluxio使用不同于默认配置的存储介质和目录。 对于希望一开始使用默认配值的用户,使用任何sudo权限帐户运行命令./bin/alluxio-mount.sh SudoMount worker。 注意上述命令应在完成alluxio-site.properties文件中设置alluxio.worker.ramdisk.size并将所有workers添加到conf/workers文件后运行。

$ ./bin/alluxio-mount.sh SudoMount workers
Proxy要求

Proxy进程提供一个基于REST的客户端,需要:

  • 最少1 GB内存
  • 开放以下端口和协议:
    • Inbound TCP 39999- clients用来访问Proxy节点。
Fuse要求

下面是Alluxio针对运行fuse进程节点要求

注意这些是运行Alluxio软件最低要求。 大规模负载下运行Alluxio Fuse会增加系统要求。

  • 最少1个CPU核
  • 最少1 GB内存
  • 已安装Fuse
    • libfuse 2.9.3或更高版本(适用于Linux)
    • osxfuse 3.7.1或更高版本(适用于MacOS)
其他要求

Alluxio还可以将日志汇总到一个远程服务器中以便统一查看。 以下是Logging Server的端口和资源要求。

Remote Logging Server要求

下面是Alluxio针对运行Remote Logging Server要求:

  • 最少1 GB硬盘空间
  • 最少1 GB内存
  • 最少2个CPU核
  • 开放以下端口和协议:
    • Inbound TCP 45600 - 以便日志程序将日志写入服务器。

2. 本地的Alluxio安装配置

用本地的文件系统做底层存储。

下载安装包:Try Alluxio in the cloud or download/install where you want it

1)配置Alluxio
$ tar -xzf alluxio-bin.tar.gz
$ cd alluxio-2.6.2

#根据模板文件创建conf/alluxio-site.properties配置文件。
$ cp conf/alluxio-site.properties.template conf/alluxio-site.properties
#在conf/alluxio-site.properties文件中将 
alluxio.master.hostname=localhost
alluxio.worker.ramdisk.size=1GB		#此内存不能超过系统的实际最大内存

$ cp alluxio-env.sh.template alluxio-env.sh
#指定java路径
JAVA_HOME=/usr/java/jdk1.8.0_301
2)挂载RAMFS文件系统
$ sudo ./bin/alluxio-mount.sh SudoMount
3)格式化Alluxio文件系统

注意:这个步骤只有在第一次运行Alluxio系统时才需要执行。 如果用户在已部署好的Alluxio集群上运行格式化命令, 当前服务器上之前保存的Alluxio文件系统的所有数据和元数据都会被清除。 但是,底层数据不会改变。

$ sudo ./bin/alluxio format

$ ./alluxio validateEnv local		#检查运行环境
4)本地启动Alluxio文件系统

简单运行如下的命令来启动Alluxio文件系统。

# 如果您尚未挂载ramdisk或要重新挂载(如为了改变ramdisk大小)
$ sudo ./bin/alluxio-start.sh local SudoMount

# 或者,如果已经安装了ramdisk
$ sudo ./bin/alluxio-start.sh local
5)验证Alluxio是否运行
[root@clu02 alluxio-2.6.0]# jps
5059 AlluxioProxy
5688 Jps
4377 AlluxioJobMaster
4268 AlluxioMaster
5053 AlluxioWorker
5055 AlluxioJobWorker

为了确认Alluxio处于运行状态,可以访问 http://localhost:19999 查看 Alluxio master 的运行状态,访问 http://localhost:30000 查看 Alluxio worker 的运行状态。

提示:若外部通过IP访问,访问失败可能是防火墙的问题

image-20211011152258751

image-20211011152332558

运行一个更全面的系统完整性检查:

$ ./bin/alluxio runTests

可以在任意时刻执行以下命令以关闭Alluxio:

$ ./bin/alluxio-stop.sh local
6)使用 Alluxio Shell

Alluxio shell 包含多种与 Alluxio 交互的命令行操作。如果要查看文件系统操作命令列表,运行:

$ ./bin/alluxio fs

你可以通过ls命令列出 Alluxio 里的文件。比如列出根目录下所有文件:

$ ./bin/alluxio fs ls /

目前 Alluxio 里没有文件。copyFromLocal命令可以拷贝本地文件到 Alluxio 中。

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

再次列出 Alluxio 里的文件,可以看到刚刚拷贝的LICENSE文件:

$ ./bin/alluxio fs ls /
-rw-r--r-- staff  staff     26847 NOT_PERSISTED 01-09-2018 15:24:37:088 100% /LICENSE

输出显示 LICENSE 文件在 Alluxio 中,也包含一些其他的有用信息,比如文件的大小、创建的日期、文件的所有者和组以及 Alluxio 中这个文件的缓存占比。

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
7)[加分项] Alluxio 中的挂载功能

为了配置 Alluxio 与 Amazon S3 交互,请在conf/alluxio-site.properties文件中向 Alluxio 配置添加 AWS 访问信息。以下命令将更新该配置。

配置修改后,同步到各个节点,再重新启动

$ 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 中创建一个目录作为挂载点。

(base) [root@clu00 alluxio-2.6.0]# alluxio fs mkdir /mnt
Successfully created directory /mnt

接着,我们挂载一个已有的 S3 bucket 到 Alluxio。本指南使用alluxio-quick-startS3 bucket。

$ ./bin/alluxio fs mount --readonly alluxio://localhost:19998/mnt/s3 s3://alluxio-quick-start/data
Mounted s3://alluxio-quick-start/data at alluxio://localhost:19998/mnt/s3

若前面未配置aws访问秘钥,可以在挂载时指定:

./bin/alluxio fs mount --option aws.accessKeyId=<accessKeyId> --option aws.secretKey=<secretKey>  /mnt/s3 s3://data-bucket/

实例:

(base) [root@clu00 alluxio-2.6.0]# alluxio fs mount --option aws.accessKeyId=******* --option aws.secretKey=***************  /mnt/s3 s3://alluxio-quick-start/data
Mounted s3://alluxio-quick-start/data at /mnt/s3
(base) [root@clu00 alluxio-2.6.0]# alluxio fs ls /mnt/s3
-r-x------  song_jie0109   song_jie0109          10077271       PERSISTED 06-21-2016 02:03:30:000   0% /mnt/s3/sample_tweets_10m.csv
-r-x------  song_jie0109   song_jie0109            955610       PERSISTED 06-21-2016 02:03:22:000   0% /mnt/s3/sample_tweets_1m.csv
-r-x------  song_jie0109   song_jie0109             89964       PERSISTED 06-21-2016 02:03:45:000   0% /mnt/s3/sample_tweets_100k.csv
-r-x------  song_jie0109   song_jie0109         157046046       PERSISTED 06-21-2016 02:03:45:000   0% /mnt/s3/sample_tweets_150m.csv

我们可以通过 Alluxio 命名空间列出 S3 中的文件。使用熟悉的ls命令列出 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

新挂载的文件和目录也可以在 Alluxio web UI 中看到。

通过 Alluxio 统一命名空间,你可以无缝地从不同存储系统中交互数据。举个例子,使用ls -R命令,你可以递归地列举出一个目录下的所有文件。

$ ./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 中。

8)[加分项] 用 Alluxio 加速数据访问

由于 Alluxio 利用内存存储数据,它可以加速数据的访问。首先,我们看一看之前从 S3 挂载到 Alluxio 中的一个文件的状态:

$ ./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”,并计算该操作的耗时。

$ 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:

$ ./bin/alluxio-stop.sh local

3.集群上部署Alluxio

Deploy an Alluxio Cluster with a Single Master - Alluxio v2.6.0 Documentation

3.1 单主节点集群

最简单的部署Alluxio在集群上的方式,易出现单点故障。

前提:

(1)各个节点之间可以免密访问

(2)确保所有节点 RPC 端口开放(默认:19998)

(3)为操作用户赋予sudo的权限,挂载RAMFS时需要。

1)下载解压
(base) [root@clu00 ~]# tar -xvf  alluxio-2.6.0-bin.tar.gz
2)修改配置文件
(base) [root@clu00 ~]# cd alluxio-2.6.0/
(base) [root@clu00 alluxio-2.6.0]# cd conf/
(base) [root@clu00 conf]# cp alluxio-site.properties.template alluxio-site.properties
(base) [root@clu00 conf]# vim alluxio-site.properties

例如修改内容如下:

alluxio.master.hostname=clu00
alluxio.master.mount.table.root.ufs=hdfs://clu00:9090/alluxio

i)hostname指集群的主节点,可以使用IP,也可以使用域名(要求子节点都可以访问到)

ii) alluxio.master.mount.table.root.ufs指定Alluxio挂载存储的根URL

For example, when HDFS is used as the under storage system, the value of this property can be set to alluxio.master.mount.table.root.ufs=hdfs://1.2.3.4:9000/alluxio/root/

When Amazon S3 is used as the under storage system, the value can be set to alluxio.master.mount.table.root.ufs=s3://bucket/dir/

提示:master配置属性alluxio.master.mount.table.root.ufs指定的目录挂载到Alluxio命名空间根目录(指Alluxio的基础存储空间),该目录代表Alluxio 的”primary storage”。在此基础上,用户可以通过挂载API添加和删除(指挂载多个底层存储)

3)指定java环境
(base) [root@clu00 conf]# cp alluxio-env.sh.template alluxio-env.sh
(base) [root@clu00 conf]# vim alluxio-env.sh


JAVA_HOME=/usr/java/jdk1.8.0_301

4)设置主节点和工作节点
(base) [root@clu00 conf]# vim masters 
clu00
(base) [root@clu00 conf]# vim workers
clu01
clu02

以上是启动所需的最小配置,其他详细配置如下configuration properties reference

  • You may need to set additional properties to enable Alluxio to access the configured under storage (eg., AWS S3 configuration)
5)节点同步配置
(base) [root@clu00 bin]# ./alluxio copyDir /root/alluxio-2.6.0
RSYNC'ing /root/alluxio-2.6.0 to masters...
clu00
RSYNC'ing /root/alluxio-2.6.0 to workers...
clu01
clu02
6)格式化

第一次启动前,主节点要格式化Alluxio,会删除所有元数据信息,但不会影响底层存储的数据。

(base) [root@clu00 alluxio-2.6.0]# ./bin/alluxio formatMasters

提示:若出现错误,查看日志信息对应修改,JAVA环境问题则需要env.sh中指定

7)启动
(base) [root@clu00 alluxio-2.6.0]# ./bin/alluxio-start.sh all SudoMount
# all 将启动master节点和所有workers节点
# SudoMount 参数将帮助workers节点挂载到RamFS上,仅仅初次启动需要挂载

......
All tasks finished
-----------------------------------------
Starting to monitor all remote services.
-----------------------------------------
--- [ OK ] The master service @ clu00 is in a healthy state.
--- [ OK ] The job_master service @ clu00 is in a healthy state.
--- [ OK ] The worker service @ clu00 is in a healthy state.
--- [ OK ] The worker service @ clu02 is in a healthy state.
--- [ OK ] The worker service @ clu01 is in a healthy state.
--- [ OK ] The job_worker service @ clu02 is in a healthy state.
--- [ OK ] The job_worker service @ clu01 is in a healthy state.
--- [ OK ] The job_worker service @ clu00 is in a healthy state.
--- [ OK ] The proxy service @ clu01 is in a healthy state.
--- [ OK ] The proxy service @ clu02 is in a healthy state.
--- [ OK ] The proxy service @ clu00 is in a healthy state.


#启动
 ./bin/alluxio-start.sh all
#关闭
 ./bin/alluxio-stop.sh all
 
$ ./bin/alluxio-start.sh masters # starts all masters in conf/masters
$ ./bin/alluxio-start.sh workers # starts all workers in conf/workers

$ ./bin/alluxio-start.sh master # starts the local master
$ ./bin/alluxio-start.sh worker # starts the local worker
8)验证Alluxio集群

网页访问visit http://<alluxio_master_hostname>:19999查看master节点

image-20211011170554130

网页访问visit http://<alluxio_worker_hostname>:30000查看worker节点

image-20211011170728854

#Master上能看到AlluxioMaster、AlluxioJobMaster、AlluxioProxy
(base) [root@clu00 alluxio-2.6.0]# jps
26578 AlluxioProxy
27190 Jps
15670 NameNode
25515 AlluxioMaster
26014 AlluxioJobMaster


#Worker上能看到AlluxioWorker、AlluxioJobWorker、AlluxioProxy
[root@clu02 ~]# jps
22657 DataNode
25250 AlluxioWorker
25477 AlluxioJobWorker
26151 Jps
25759 AlluxioProxy

4、补充:添加新的worker节点

动态添加worker到Alluxio集群就像通过适当配置启动新Alluxio worker进程一样简单。 在大多数情况下,新worker配置应与所有其他worker配置相同。 在新worker上运行以下命令,以将其添加到集群。

$ ./bin/alluxio-start.sh worker SudoMount # 启动本地 worker

一旦worker启动,它将在Alluxio master上注册,并成为Alluxio集群的一部分。

减少worker只需要简单停止一个worker进程。

$ ./bin/alluxio-stop.sh worker # 停止本地 worker

一旦worker被停止,master将在预定的超时值(通过master参数alluxio.master.worker.timeout配置)后将此worker标记为缺失。 主机视worker为“丢失”,并且不再将其包括在集群中。

实际步骤:

1、修改workers文件,添加新服务器

2、scp alluxio目录 到新的服务器节点

3、在新服务节点手动挂载 sudo ./bin/alluxio-mount.sh SudoMount

4、master节点统一启动

6、补充:配置多级存储

1、创建目录

mkdir /mnt/alluxio_data

2、对于与启动Alluxio服务的用户组同组用户应给予770权限

sudo chmod 770 alluxio_data

3、修改配置文件

alluxio.worker.tieredstore.levels=2
alluxio.worker.tieredstore.level0.alias=MEM
alluxio.worker.tieredstore.level0.dirs.path=/mnt/ramdisk
alluxio.worker.tieredstore.level0.dirs.mediumtype=MEM
alluxio.worker.tieredstore.level0.dirs.quota=1GB

alluxio.worker.tieredstore.level1.alias=HDD
alluxio.worker.tieredstore.level1.dirs.path=/mnt/alluxio_data
alluxio.worker.tieredstore.level1.dirs.mediumtype=HDD
alluxio.worker.tieredstore.level1.dirs.quota=50GB


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值