在集群上独立运行Alluxio

Slack Docker Pulls GitHub edit source

使用单个Master运行Alluxio

在集群上部署Alluxio最简单的方法是使用单个master。 但是,这个单个master在Alluxio集群中存在单点故障(SPOF):如果该机器或进程不可用,整个集群将不可用。 我们强烈建议在生产环境中使用具有高可用性的模式来运行Alluxio masters。

先决条件

  • 要部署Alluxio群集,首先下载 预编译的Alluxio二进制文件,使用以下命令解压缩tarball,并将解压的目录复制到所有节点(包括运行master和worker的所有节点)
$ tar -xvzpf alluxio-2.4.0-bin.tar.gz

*设置不需要密码的从master节点到worker节点的SSH登录。 可以将主机的公共SSH密钥添加到〜/.ssh/authorized_keys中。 有关更多详细信息,请参见本教程

*开放所有节点之间的TCP通信。 对于基本功能,确保所有节点上RPC端口都是打开的(默认值:19998)。

*仅在期望Alluxio自动在worker节点上上安装RAMFS时才需要给将运行Allluxio的OS用户授予sudo特权。

基本配置

在master节点上,参照模板创建conf/alluxio-site.properties配置文件。

$ cp conf/alluxio-site.properties.template conf/alluxio-site.properties

在配置文件(conf/alluxio-site.properties)中按如下配置:

alluxio.master.hostname=<MASTER_HOSTNAME>
alluxio.master.mount.table.root.ufs=<STORAGE_URI>
  • 第一个属性alluxio.master.hostname设置单个master节点的主机名。 示例包括alluxio.master.hostname=1.2.3.4alluxio.master.hostname=node1.a.com
  • 第二个属性alluxio.master.mount.table.root.ufs设置为挂载到Alluxio根目录的底层存储URI。 一定保证master节点和所有worker节点都可以访问此共享存储。 示例包括alluxio.master.mount.table.root.ufs=hdfs://1.2.3.4:9000/alluxio/root/alluxio.master.mount.table.root.ufs=s3//bucket/dir/

接下来,将配置文件复制到所有其他Alluxio节点。 通过将所有work节点的IP地址或主机名添加到conf/workers文件中,操作员可以利用内置工具将配置文件复制到远程节点,如下所示。

$ ./bin/alluxio copyDir conf/

此命令会将conf/目录复制到conf/workers文件中指定的所有worker节点。 成功执行此命令后,所有Alluxio节点都将被正确配置。 这是启动Alluxio的最低配置,用户可以添加其他配置。

启动一个Alluxio集群

格式化Alluxio

在首次启动Alluxio之前,必须先格式化日志。

格式化日记将删除Alluxio中的所有元数据。 但是,格式化不会涉及底层存储的数据。

在master节点上,使用以下命令格式化Alluxio:

$ ./bin/alluxio formatMaster

启动Alluxio

启动Alluxio集群,在master点上确保conf/workers文件中所有worker的主机名都是正确的。

在master点上,运行以下命令启动Alluxio集群:

$ ./bin/alluxio-start.sh all SudoMount

这将在此节点上启动master,并在conf/workers文件中指定的所有节点上启动所有workers。 SudoMount参数使workers可以尝试使用sudo特权(如果尚未挂载)来挂载RamFS。

验证Alluxio集群是否在运行

要验证Alluxio是否正在运行,请访问http://<alluxio_master_hostname>:19999以查看Alluxio master的状态页面。

Alluxio带有一个简单的程序可以在Alluxio中读写示例文件。 使用以下命令运行示例程序:

$ ./bin/alluxio runTests

常用操作

以下是在Alluxio集群上执行的常见操作。

停止Alluxio

停止一个Alluxio服务,运行:

$ ./bin/alluxio-stop.sh all

这将停止conf/workersconf/masters中列出的所有节点上的所有进程。

可以使用以下命令仅停止master和workers:

$ ./bin/alluxio-stop.sh masters # 停止所有conf/masters的masters
$ ./bin/alluxio-stop.sh workers # 停止所有conf/workers的workers

如果不想使用ssh登录所有节点来停止所有进程,可以在每个节点上运行命令以停止每个组件。 对于任何节点,可以使用以下命令停止master或worker:

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

重新启动Alluxio

与启动Alluxio类似。 如果已经配置了conf/workersconf/masters,可以使用以下命令启动集群:

$ ./bin/alluxio-start.sh all

可以使用以下命令仅启动masters或workers:

$ ./bin/alluxio-start.sh masters # 启动conf/masters中全部的master
$ ./bin/alluxio-start.sh workers # 启动conf/workers中全部的worker

如果不想使用ssh登录所有节点来启动所有进程,可以在每个节点上运行命令以启动每个组件。 对于任何节点,可以使用以下命令启动master或worker:

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

格式化日志

在任何master节点上,运行以下命令格式化Alluxio日志:

$ ./bin/alluxio formatMaster

格式化日记将删除Alluxio中的所有元数据。 但是,将不会触及底层存储的数据。

动态添加/减少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为“丢失”,并且不再将其包括在集群中。

更新master配置

为了更新master配置,必须首先停止服务,更新master节点上的conf/alluxio-site.properties文件,并将文件复制到所有节点(例如,使用bin/alluxio copyDir conf/),然后重新启动服务

更新worker配置

如果只需要为worker节点更新某些本地配置(例如,更改分配给该worker的存储容量或更新存储路径),则无需停止并重新启动master节点。 可以只停止本地worker,更新此worker上的配置(例如conf/alluxio-site.properties)文件,然后重新启动此worker。