分佈式內存文件系統Alluxio實戰

前言java

        Alluxio是一個分佈式內存文件系統,能夠在集羣裏以訪問內存的速度來訪問存在Alluxio裏的文件。把Alluxio是架構在最底層的分佈式文件存儲和上層的各種計算框架之間的一種中間件,其前身爲Tachyonlinux

      Alluxio起源於Alluxio公司創始人李浩源讀博期間在 UC Berkeley AMPLab實驗室的博士課題。自從Alluxio的第一個開源版本發佈以後,項目發展迅猛。社區貢獻者人數已經迅速增長到200多個,這200多人來自50多家公司,其中不乏國際巨頭,例如Barclays,IBM,Intel等等。另外更多的公司將Alluxio部署到了本身的生產環境中。git

官方網站:http://www.alluxio.org/github

spacer.gifwKiom1hKJWzBETIWAAFR3WoiIaw600.png

規劃apache

master 10.64.8.3vim

slave  10.64.8.三、10.64.8.四、10.64.8.5centos


一:安裝bash

  • slave一、slave二、slave3架構

(1)安裝jdkoracle

$ 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


二:集羣配置

  • slave一、slave二、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日誌和工做程序存儲目錄。

  • slave一、slave二、slave3

$ ./bin/alluxio format

(2)啓動master節點,使用local參數同時啓動master和worker。

  • slave1

$ ./bin/alluxio-start.sh local

spacer.gifwKioL1hKKNCT9CjCAAA5gF3Os68356.png

(3)啓動worker節點

  • slave二、slave3

$ ./bin/alluxio-start.sh worker

wKioL1hKKQLiNKygAAAjy5G2QG4383.png

spacer.gif



四:訪問

(1)訪問的http://localhost:19999看到Alluxio的master

wKiom1hKKRuiflZcAAF9pJpFJBA463.png


(2)能看到全部alluxio中的文件。

wKioL1hKKU-ysJuoAAF90pU2LvU112.png


(3)worker裏面能看到全部worker的狀態

spacer.gif


(4)訪問http://localhost:30000看到當前worker的信息。

spacer.gif


五:使用alluxio命令行

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

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

wKiom1hKKeHARHkuAAAsRuzU08k063.png

(2)從本地文件系統copy文件到alluxio

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

wKiom1hKKe_S8ZCZAAAlMDmfWRs792.png

(3)cat命令能夠輸出文件內容

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

wKioL1hKKf_SiPFkAAAffsnzhag757.png

(4)從alluxio拷貝文件到本地

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

wKioL1hKKhGD_cTTAAAwILRWkCQ518.png


(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中。

wKioL1hKKl7ieyPcAABdyjXBV-4257.png


wKioL1hKKn6DSrnQAAGvypCSLl0544.png


八:使用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

spacer.gifwKioL1hKKq6i6eMvAABlMJok3Gs131.png

相關文章
相關標籤/搜索