Alluxio+HDFS实战

存储架构 2017-06-01 阅读原文

介绍

Alluxio(之前名为Tachyon)是世界上第一个以内存为中心的虚拟的分布式存储系统。它统一了数据访问的方式,为上层计算框架和底层存储系统构建了桥梁。应用只需要连接Alluxio即可访问存储在底层任意存储系统中的数据。此外,Alluxio的以内存为中心的架构使得数据的访问速度能比现有常规方案快几个数量级。

在大数据生态系统中,Alluxio介于计算框架(如Apache Spark,Apache MapReduce,Apache HBase,Apache Hive,Apache Flink)和现有的存储系统(如Amazon S3,OpenStack Swift,GlusterFS,HDFS,MaprFS,Ceph,NFS,OSS)之间。Alluxio为大数据软件栈带来了显著的性能提升。Alluxio与Hadoop是兼容的。 现有的数据分析应用,如Spark和MapReduce程序,可以不修改代码直接在Alluxio上运行

Alluxio是中国人开发的, 好处就是中文文档很齐全 ,方便大家入门,具体科普就不做了,看 官方入口

设计

Alluxio本身就如上面介绍的,支持很多大数据框架,这也正是我们看上的点,我们目前MR、Hive、HBase、Spark、Presto都是我们在使用的,而底层存储HDFS、GlusterFS都是我们在使用的。看起来Alluxio可以对我们的很多应用进行提速。本文以Alluxio+HDFS模式为例讲解Alluxio的部署和使用。

Alluxio的设计使用了单Master和多Worker的架构。从高层的概念理解,Alluxio可以被分为三个部分,Master,Worker和Client。Master和Worker一起组成了Alluxio的服务端,它们是系统管理员维护和管理的组件。Client通常是应用程序,如Spark或MapReduce作业,或者Alluxio的命令行用户。Alluxio用户一般只与Alluxio的Client组件进行交互。

环境

既然Alluxio底层的存储打算使用HDFS,我们就把Alluxio部署在Hadoop上吧,Hadoop环境采用之前部署的CDH5.10环境,Hadoop版本为2.6。

HostAlluxio-masterAlluxio-worker
hadoop1*
hadoop2*
hadoop3*
hadoop4*
hadoop5*
hadoop6*

部署

下载

直接下载官方预编译好的CDH5的Alluxio版本

wget 'http://downloads.alluxio.org/downloads/files/1.4.0/alluxio-1.4.0-cdh5-bin.tar.gz'

安装

alluxio统一部署在/opt/programs/目录下,hadoop1~hadoop6都需要安装。可以先在hadoop1上安装配置,然后把整个安装目录拷贝到hadoop2~hadoop6

cd /opt/programs
tar zxvf alluxio-1.4.0-cdh5-bin.tar.gz

ps:解压完毕后再当前目录下有一个alluxio-1.4.0目录。

配置

alluxio的默认配置文件都在/opt/programs/alluxio-1.4.0/conf下面,具体的配置项可以查看 官网

alluxio-env.sh

许多常用的Alluxio配置项可以通过环境变量进行配置,但是不建议使用,推荐使用alluxio-site.properties,下面是我的配置。

ALLUXIO_HOME=/opt/programs/alluxio-1.4.0
ALLUXIO_LOGS_DIR=/opt/programs/alluxio-1.4.0/logs
ALLUXIO_MASTER_HOSTNAME=hadoop1
ALLUXIO_RAM_FOLDER=/mnt/ramdisk
ALLUXIO_UNDERFS_ADDRESS=hdfs://dev-dalu:8020/alluxio
ALLUXIO_WORKER_MEMORY_SIZE=2048MB
JAVA_HOME=/opt/programs/jdk1.7.0_67

alluxio-site.properties

Alluxio还为用户提供了一种更一般的方式,即通过属性文件来自定义所有支持的配置项。Alluxio服务器以及应用客户端都可以通过alluxio-site.properties文件覆盖默认属性值。下面是我的配置:

alluxio.home=/opt/programs/alluxio-1.4.0
alluxio.work.dir=/opt/programs/alluxio-1.4.0
alluxio.conf.dir=${alluxio.home}/conf
alluxio.logs.dir=${alluxio.home}/logs
alluxio.metrics.conf.file=${alluxio.conf.dir}/metrics.properties
alluxio.master.hostname=hadoop1
alluxio.underfs.address=hdfs://dev-dalu:8020/alluxio
alluxio.underfs.hdfs.configuration=/etc/hadoop/conf/core-site.xml
alluxio.master.bind.host=172.31.217.151
alluxio.master.hostname=hadoop1
alluxio.master.journal.folder=/opt/programs/alluxio-1.4.0/journal
alluxio.master.web.bind.host=172.31.217.151
alluxio.master.web.hostname=hadoop1
alluxio.master.web.port=19999
alluxio.worker.bind.host=0.0.0.0
alluxio.worker.memory.size=2048MB
alluxio.worker.tieredstore.levels=1
alluxio.worker.tieredstore.level0.alias=MEM
alluxio.worker.tieredstore.level0.dirs.path=/mnt/ramdisk

log4j.properties

alluxio的日志格式,保持默认即可。

metrics.properties

度量指标信息可以让用户深入了解集群上运行的任务。这些信息对于监控和调试是宝贵的资源。度指标量系统可以通过配置文件进行配置,你可以发送HTTP请求”/metrics/json”来获取一个以JSON格式表示的所有已注册度量信息的快照。具体参照: 度量指标系统

workers

alluxio的worker节点,集群内所有worker节点都需要列出来,我的配置:

hadoop2
hadoop3
hadoop4
hadoop5
hadoop6

和HDFS存储相关的配置

因为底层存储使用HDFS,所以需要再alluxio的配置目录引入Hadoop的配置文件

core-site.xml

cd /opt/programs/alluxio-1.4.0/conf
ln -s /etc/hadoop/conf/core-site.xml .

hdfs-site.xml

cd /opt/programs/alluxio-1.4.0/conf
ln -s /etc/hadoop/conf/hdfs-site.xml .

启动

格式化

alluxio format

启动

alluxio-start.sh all NoMount

也可以单独各个组件

#启动master
alluxio-start.sh master

#启动worker
alluxio-start.sh workers NoMount

WEB

在浏览器访问172.31.217.151:19999

首页

文件页

节点页

实验

上传文件到alluxio

alluxio fs copyFromLocal anaconda-ks.cfg /

alluxio文件固化到HDFS

alluxio fs persist /anaconda-ks.cfg
hadoop fs -ls /alluxio

释放alluxio的文件

alluxio fs free /anaconda-ks.cfg

重新加载HDFS文件到alluxio文件

alluxio fs load /anaconda-ks.cfg

ps:注意free alluxio中的文件,并不会删除底层存储上的文件

删除alluxio的文件

ps:注意底层存储系统的文件也会被删除

更多Alluxio CLI参考 官方文档

责编内容by:好脑袋和烂笔头 【阅读原文】。感谢您的支持!