分布式内存文件系统Alluxio实战

前言

        Alluxio是一个分布式内存文件系统,可以在集群里以访问内存的速度来访问存在Alluxio里的文件。把Alluxio是架构在最底层的分布式文件存储和上层的各种计算框架之间的一种中间件,其前身为Tachyon。

Alluxio起源于Alluxio公司创始人李浩源读博期间在 UC Berkeley AMPLab实验室的博士课题。自从Alluxio的第一个开源版本发布之后,项目发展迅猛。社区贡献者人数已经迅速增加到200多个,这200多人来自50多家公司,其中不乏国际巨头,例如Barclays,IBM,Intel等等。另外更多的公司将Alluxio部署到了自己的生产环境中。

官方网站:http://www.alluxio.org/

规划

master 10.64.8.3

slave  10.64.8.3、10.64.8.4、10.64.8.5

一:安装

  • slave1、slave2、slave3

(1)安装jdk

$ wget http://download.oracle.com/otn-pub/java/jdk/8u112-b15/jdk-8u112-linux-x64.tar.gz
$ tar xf jdk-8u112-linux-x64.tar.gz -C /opt
$ vim /etc/profile
增加
export JAVA_HOME=/opt/jdk1.8.0_112
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
$ source /etc/profile

(2)安装alluxio

$ cd opt
$ wget http://downloads.alluxio.org/downloads/files/1.3.0/alluxio-1.3.0-bin.tar.gz
$ tar xf alluxio-1.3.0-bin.tar.gz
$ cd alluxio-1.3.0

二:集群配置

  • slave1、slave2、slave3

1:使用conf/alluxio-env.sh.template复制一份配置。

$ cp conf/alluxio-env.sh.template conf/alluxio-env.sh
#!/usr/bin/env bash
#alluxio的安装目录
ALLUXIO_HOME=/opt/alluxio-1.3.0
# Log目录 (默认: ${ALLUXIO_HOME}/logs).
#ALLUXIO_LOGS_DIR=/var/log/alluxio
# master的主机名
ALLUXIO_MASTER_HOSTNAME=slave1
# master节点ip,将在V2版本废弃该配置
# ALLUXIO_MASTER_ADDRESS=10.64.8.3
# worker节点保存in-memory数据的目录 (Default: /mnt/ramdisk).
#ALLUXIO_RAM_FOLDER
# 底层存储系统的地址,默认为本地文件系统 (Default: ${ALLUXIO_HOME}/underFSStorage)
#ALLUXIO_UNDERFS_ADDRESS
# worker节点的内存设置. (Default: 1GB)
ALLUXIO_WORKER_MEMORY_SIZE= 50GB
# 下面jmx的远程调试
# ALLUXIO_JAVA_OPTS
# ALLUXIO_MASTER_JAVA_OPTS
# ALLUXIO_WORKER_JAVA_OPTS
# ALLUXIO_USER_JAVA_OPTS

2:配置worker节点

$ vim conf/workers
10.64.8.3
10.64.8.4
10.64.8.5

三:启动

(1)格式化Alluxio日志和工作程序存储目录。

  • slave1、slave2、slave3
$ ./bin/alluxio format

(2)启动master节点,使用local参数同时启动master和worker。

  • slave1
$ ./bin/alluxio-start.sh local

(3)启动worker节点

  • slave2、slave3
$ ./bin/alluxio-start.sh worker



四:访问

(1)访问的http://localhost:19999看到Alluxio的master

(2)能看到所有alluxio中的文件。

(3)worker里面能看到所有worker的状态

(4)访问http://localhost:30000看到当前worker的信息。


五:使用alluxio命令行

(1)查看aullio,默认使用本地地址端口

$ ./bin/alluxio fs ls alluxio://10.64.8.3:19999/
$ ./bin/alluxio fs ls /

(2)从本地文件系统copy文件到alluxio

$ ./bin/alluxio fs copyFromLocal /opt/cassandra/conf/ /cassandra
Copied /opt/cassandra to /cassandra

(3)cat命令可以输出文件内容

$ ./bin/alluxio fs cat /test.txt

(4)从alluxio拷贝文件到本地

$ ./bin/alluxio fs copyToLocal /602.txt /tmp/602.txt
Copied /602.txt to /tmp/602.txt

(5)将alluxio数据持久化到本地

alluxio的数据是存在内存中的,默认使用本地的文件系统作为底层的系统,可以将alluxio中的数据持久化到本地文件系。路径由ALLUXIO_UNDERFS_ADDRESS指定,默认为./underFSStorage/

$ ./bin/alluxio fs persist /cassandra
$ ls ./underFSStorage/
cassandra

(6)常见支持的命令,与linux系统命令用法相同。

./bin/alluxio fs cat
./bin/alluxio fs chmod
./bin/alluxio fs chown
./bin/alluxio fs cp
./bin/alluxio fs mv
./bin/alluxio fs rm
./bin/alluxio fs touch
./bin/alluxio fs mkdir

六:使用NFS作为底层文件系统

(1)在master上面挂载nfs

$ /etc/init.d/rpcbind start
$ mount -t nfs -o vers=3,tcp 10.10.10.10:/Vol-01/alluxio /mnt/nfs

(2)修改alluxio配置

$ vim ./conf/alluxio-env.sh
#ALLUXIO_UNDERFS_ADDRESS=
改成
ALLUXIO_UNDERFS_ADDRESS=/mnt/nfs

(3)格式化

$ ./bin/alluxio format

(4)启动

master

$ ./bin/alluxio-start.sh master

worker

$ ./bin/alluxio-start.sh worker

(5)测试

创建一个文件在nfs中

$ echo 11111111111 >>/mnt/nfs/nfstest.txt

查看alluxio就能看到这个文件

$./bin/alluxio fs ls /
-rw-r--r--   root    root   12.00B  11-08-2016 17:22:34:477  Not In Memory  /nfstest.txt
$./bin/alluxio fs cat /nfstest.txt
11111111111

七:使用HDFS作为底层文件系统

(1)alluxio版本

默认的alluxio-1.3.0-bin.tar.gz安装包支持hdfs 2.2.0,使用其他版本的hdfs则需要下载对应的alluxio安装包。或者利用默认包进行重新编译,步骤如下

1:修改pom.xml中的,使用Hadoop2.2

<hadoop.version>2.2.0</hadoop.version>
修改为
<hadoop.version>2.6.0</hadoop.version>

2:重新编译

$ mvn clean package -DskipTests

编译成功后会在assembly/target目录中生成新的alluxio-assemblies-1.3.0-jar-with-dependencies.jar

(2)alluxio配置

1:修改conf/alluxio-env.sh

$ vim conf/alluxio-env.sh
ALLUXIO_UNDERFS_ADDRESS=hdfs://10.64.8.1:8020

(3)格式化

$ ./bin/alluxio format

(4)启动

master

$ ./bin/alluxio-start.sh master

worker

$ ./bin/alluxio-start.sh worker

(5)查看

$ ./bin/alluxio ls  /

发现hdfs中的文件都在alluxio中。


八:使用fuse挂载alluxio

  • Linux kernel 2.6.9及以上
  • JDK 1.8及以上
  • libfuse 2.9.3及以上 (2.8.3也能够工作,但会提示一些警告)
  • 需要根据源码包进行重新编译、需要jdk、maven、libfuse


(1)配置jdk

$ wget http://download.oracle.com/otn-pub/java/jdk/8u112-b15/jdk-8u112-linux-x64.tar.gz
$ tar xf jdk-8u112-linux-x64.tar.gz -C /opt
$ vim /etc/profile
增加
export JAVA_HOME=/opt/jdk1.8.0_112
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
$ source /etc/profile


(2)配置maven

$ wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.0.5/binaries/apache-maven-3.0.5-bin.tar.gz
$ tar -zxvf apache-maven-3.0.5-bin.tar.gz
$vim /etc/profile
增加
export MAVEN_HOME=/opt/apache-maven-3.0.5
export PATH=$PATH:$MAVEN_HOME/bin
$ source /etc/profile


(2)安装libfuse

$ wget http://mirror.centos.org/centos/6/os/x86_64/Packages/fuse-libs-2.8.3-5.el6.x86_64.rpm
$ rpm -ivh fuse-libs-2.8.3-5.el6.x86_64.rpm


(3)编译安装

$ git clone git://github.com/alluxio/alluxio.git
$ cd alluxio
$ mvn install -DskipTests      ---需要download文件
若出现java.lang.OutOfMemoryError: Java heap space,请执行:
$ export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"


(4)使用alluxio-fuse

以hdfs作为底层存储系统为例,其他存储也是这样。

格式化

$ ./bin/alluxio format

启动

$ ./bin/alluxio-start.sh worker

挂载

$ mkdir -p /data/test
$ ./bin/alluxio-fuse.sh mount /data/test

时间: 2024-10-18 18:37:57

分布式内存文件系统Alluxio实战的相关文章

Spark入门实战系列--10.分布式内存文件系统Tachyon介绍及安装部署

1 Tachyon介绍 1.1 Tachyon简介 随着实时计算的需求日益增多,分布式内存计算也持续升温,怎样将海量数据近乎实时地处理,或者说怎样把离线批处理的速度再提升到一个新的高度是当前研究的重点.近年来,内存的吞吐量成指数倍增长,而磁盘的吞吐量增长缓慢,那么将原有计算框架中文件落地磁盘替换为文件落地内存,也是提高效率的优化点. 目前已经使用基于内存计算的分布式计算框架有:Spark.Impala及SAP的HANA等.但是其中不乏一些还是有文件落地磁盘的操作,如果能让这些落地磁盘的操作全部落

分布式内存文件系统:Tachyon

Tachyon是一个分布式内存文件系统,可以在集群里以访问内存的速度来访问存储在Tachyon里的文件.Tachyon是架构在最底层的分布式文件系统和上层的各种计算框架之间的一种中间件,其主要职责是将那些不需要落地到DFS里的文件,落地到分布式内存文件系统中,来达到共享内存,从而提高效率,减少内存冗余,减少GC时间等. Tachyon架构 Tachyon的架构是传统的Master-Slave架构,这里和Hadoop类似,TachyonMaster里WorkflowManager是 Master进

Tachyon:Spark生态系统中的分布式内存文件系统

转自: http://www.csdn.net/article/2015-06-25/2825056  摘要:Tachyon把内存存储的功能从Spark中分离出来, 使Spark可以更专注计算的本身, 以求通过更细的分工达到更高的执行效率. Tachyon是Spark生态系统内快速崛起的一个新项目. 本质上, Tachyon是个分布式的内存文件系统, 它在减轻Spark内存压力的同时,也赋予了Spark内存快速大量数据读写的能力.Tachyon把内存存储的功能从Spark中分离出来, 使Spar

分布式内存文件系统Tachyon

UCBerkeley研发的Tachyon(超光子['t?ki???n],名字要不要这么太嚣张啊:)是一款为各种集群并发计算框架提供内存数据管理的平台,也可以说是一种内存式的文件系统吧.如下图,它就处于这样一个层次:在现有存储系统如HDFS之上,在Spark,MapReduce,Impala等各种计算框架之下. 为什么要有这么一个框架呢?MapReduce就不说了,但像Spark这种内存计算框架,为什么还需要再加一层内存管理的文件系统?因为像Spark这种,框架其实只提供了强大的内存计算能力,但未

spring与dubbo分布式REST服务开发实战视频教程

14套java精品高级架构课,缓存架构,深入Jvm虚拟机,全文检索Elasticsearch,Dubbo分布式Restful 服务,并发原理编程,SpringBoot,SpringCloud,RocketMQ中间件,Mysql分布式集群,服务架构,运 维架构视频教程 14套精品课程介绍: 1.14套精 品是最新整理的课程,都是当下最火的技术,最火的课程,也是全网课程的精品: 2.14套资 源包含:全套完整高清视频.完整源码.配套文档: 3.知识也 是需要投资的,有投入才会有产出(保证投入产出比是

高性能的分布式内存对象缓存系统Memcached

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. 外文名 memcached 所    属 缓存系统 编写语言 不限 通信手段 memcached协议 目录 1功能 2特征 ? 协议 ? 事件处

Beanstalkd一个高性能分布式内存队列系统

流行的队列框架大致有:Memcacheq,Fqueue, RabbitMQ, Beanstalkd以及linkedin的kafka.RabbitMQ使用比较广泛,Beanstalkd是后起之秀.Beanstalkd之于RabbitMQ,就好比Nginx之于Apache,Varnish之于Squid.后面在项目中使用Beanstalkd的过程中,更发现其简单.轻量级.高性能.易使用等特点,以及优先级.多队列.持久化.分布式容错.超时控制等特性.下面简单介绍一下Beanstalkd. 设计思想 高性

Disque:Redis之父新开源的分布式内存作业队列

Disque是Redis之父Salvatore Sanfilippo新开源的一个分布式内存消息代理.它适应于"Redis作为作业队列"的场景,但采用了一种专用.独立.可扩展且具有容错功能的设计,兼具Redis的简洁和高性能,并且用C语言实现为一个非阻塞网络服务器. Redis的作者Salvatore Sanfilippo(网名Antirez)发表的一篇博客文章,介绍了自己几个月以来在晚上和周末开发的新项目--Disque. 开发初衷 Antirez之所以动念开发Disque,是因为看到

memached分布式内存缓存服务器

一:memached简介 在许多高并发的应用中,把业务数据保持久化 ( 保存到数据库,磁盘文件或其它 ) 后,应用从持久化设备中读取数据并在浏览器中显示,随用户量,数据量增大,访问的集中,会出现持久化设备负担过重(典型的就是数据库),影响应用响应速度,应用延迟严重等重大问题.典型的应用就是 WEB 应用中的高并发网站. 这时候应用就需要一种缓存机制来提高并发读取速度的性能 , memcached 能在大中型系统中提供优秀的缓存服务. memcached 是高性能的分布式内存缓存服务器.一般的使用