在EC2上运行Alluxio

Slack Docker Pulls GitHub edit source

使用Alluxio自带的Vagrant脚本可以将 Alluxio部署在Amazon EC2上。该脚本允许你创建,配置以及撤销集群。

前期准备

安装Vagrant和AWS插件

下载Vagrant

安装AWS Vagrant插件:

  1. $ vagrant plugin install vagrant-aws
  2. $ vagrant box add dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box

安装Alluxio

下载Alluxio到你本地的机器上并解压(unzip)。

安装python库依赖

安装python>=2.7,注意不是python3。

进入deploy/vagrant目录下,运行:

  1. $ sudo bash bin/install.sh

另外,你可以选择手动安装pip,之后进入deploy/vagrant目录,运行:

  1. $ sudo pip install -r pip-req.txt

启动集群

要在EC2上运行Alluxio集群,首先在Amazon Web Services site注册一个Amazon EC2帐号。

接着创建access keys并且设置AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY环境变量:

  1. $ export AWS_ACCESS_KEY_ID=<your access key>
  2. $ export AWS_SECRET_ACCESS_KEY=<your secret access key>

接着生成EC2 Key Pairs。确保将私钥文件的权限设置成只对你可读。

  1. $ chmod 400 <your key pair>.pem

复制deploy/vagrant/conf/ec2.yml.templatedeploy/vagrant/conf/ec2.yml

  1. $ cp deploy/vagrant/conf/ec2.yml.template deploy/vagrant/conf/ec2.yml

deploy/vagrant/conf/ec2.yml配置文件中,将Keypair设置为你的keypair名,Key_Path设置成pem key路径。

Vagrant脚本默认会在该区域(us-east-1)和可用区域(us-east-1b)中创建一个名为alluxio-vagrant-test安全组。 该安全组会在区域中自动建立,并且所有inbound及outbound网络流量都将打开。你可以在ec2.yml配置文件中设置security groupregion以及availability zone的值。

Vagrant脚本默认使用Amazon S3作为Alluxio的底层文件系统,但需要配置你的S3桶的名字。你可以从AWS web console登录Amazon S3图形界面,创建一个新的桶,然后将conf/ufs.yml中的S3:Bucket域设置为桶的名字。你也可以选择使用其他系统作为Alluxio的底层存储,比如Hadoop文件系统,只要在conf/ufs.yml中配置合适的Type和相关配置项即可。

现在你可以以你选择的文件系统作为Alluxio的底层文件系统,在你所选择的可用区域下启动Alluxio集群了,在deploy/vagrant目录下运行:

  1. $ ./create <number of machines> aws

集群中的每个节点运行一个Alluxio worker,AlluxioMaster节点上运行Alluxio master。

访问集群

通过Web UI访问

命令./create <number of machines> aws运行成功后,在shell中会输出类似下面的两条语句。

  1. >>> AlluxioMaster public IP is xxx, visit xxx:19999 for Alluxio web UI<<<
  2. >>> visit default port of the web UI of what you deployed <<<

Alluxio Web UI的默认端口为19999

在浏览器中输入http://{MASTER_IP}:{PORT}地址访问Web UI。

也能通过AWS web console监视其状态。

通过ssh访问

节点的名称依次被设置成AlluxioMaster, AlluxioWorker1, AlluxioWorker2等等。

通过ssh登陆一个节点,运行:

  1. $ vagrant ssh <node name>

例如,通过以下命令可以登陆AlluxioMaster节点:

  1. $ vagrant ssh AlluxioMaster

所有的软件都安装在根目录下,例如Alluxio安装在/alluxio

AlluxioMaster节点上,可以对Alluxio运行测试检测其健康状态:

  1. $ /alluxio/bin/alluxio runTests

在所有测试完成后,再次访问Alluxio的web UI http://{MASTER_IP}:19999,在导航栏中点 击Browse,你应该能看到测试过程中写入到Alluxio的文件。

如果你登录AWS web console,进入S3管理界面, 在你之前新创建的桶中,你应该可以看到由以上测试所写入的文件。

在集群中的某个节点上,可以通过ssh免密码登陆到集群中的其他节点:

  1. $ ssh AlluxioWorker1

撤销集群

deploy/vagrant目录下运行:

  1. $ ./destroy

从而撤销之前创建的集群。一次只能创建一个集群。当该命令成功执行后,EC2实例将终止运行。