首页 > 代码库 > 分布式内存文件系统Alluxio实战
分布式内存文件系统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
本文出自 “酱酱酱子” 博客,请务必保留此出处http://heqin.blog.51cto.com/8931355/1881114
分布式内存文件系统Alluxio实战