基于内存的分布式文件存储系统Alluxio

如果是只有字段缓存的话,redis应该是够用了。但是如果涉及到大量文件,尤其是用hdfs作为底层存储结构的,建议用alluxio升级一下。一方面有利于spark资源控制,另一方面也可以统一入口便于扩展。

本文只涉及集群环境下一个简单小集群的搭建,详细用法见官方文档http://www.alluxio.org/docs/master/cn/Running-Alluxio-on-a-Cluster.html

1 集群规划

三台服务器hadoop-master-001、hadoop-slave-001、hadoop-slave-002,节点与名称相同。部署spark standalone集群、hadoop standalone集群、alluxio集群。

2 软件版本

jdk-8u144
scala-2.11.8
spark-2.2.0-hadoop2.7
hadoop-2.7.3
alluxio-1.8.0

3 配置

3.1 下载并解压

root用户下
wget http://alluxio.org/downloads/files/1.8.0/alluxio-1.8.0-bin.tar.gz
mkdir –p /app/alluxio/
tar -zxvf alluxio-1.8.0-bin.tar.gz -C /app/alluxio/

3.2 修改配置文件alluxio-env.sh

cd /app/alluxio/alluxio-1.8.0/ conf
cp alluxio-env.sh.template alluxio-env.sh
vim alluxio-env.sh

键入
export JAVA_HOME=/app/soft/jdk1.8.0_144
export ALLUXIO_MASTER_HOSTNAME=hadoop-master-001
export ALLUXIO_WORKER_MEMORY_SIZE=4096M
export ALLUXIO_UNDERFS_ADDRESS=hdfs://hadoop-master-001:9000

其中第一行是JDK路径、第二行是master的hostname(alluxio均是以hostname命名各服务器)、第三行是worker的运行内存、第四行为hdfs的地址。

3.3 修改配置文件alluxio-site.properties

# cp alluxio-site.properties.template alluxio-site.properties
vim alluxio-site.properties

键入
alluxio.master.hostname=hadoop-master-001

3.4 修改配置文件workers

vim workers
键入
hadoop-slave-001
hadoop-slave-002

3.5 修改一点启动小bug

为防止依赖库的启动java路径错误,建议修改启动脚本$ALLUXIO_HOME/libexec/alluxio-config.sh,禁止which java检索,而改为固定路径。
#if [[ -z "$(which java)" ]]; then
# echo "Cannot find the 'java' command."
# exit 1
#fi
JAVA_HOME=/app/soft/jdk1.8.0_144
#JAVA_HOME=${JAVA_HOME:-"$(dirname $(which java))/.."}

3.6 复制到worker节点

scp -r /app/alluxio/ root@hadoop-slave-001:/app/
scp -r /app/alluxio/ root@hadoop-slave-002:/app/

3.7 格式化

../bin/alluxio format

3.8 启动

../bin/alluxio-start.sh all SudoMount

3.9 检查是否成功

可以从logs/文件夹下查看记录,或者web浏览:masterIP:19999/

3.10 Spark与alluxio连接

需要保证alluxio在各节点均为相同路径后,在Spark目录下conf/spark-default.conf中追加
#alluxio
spark.driver.extraClassPath /app/alluxio/alluxio-1.8.0/client/alluxio-1.8.0-client.jar
spark.executor.extraClassPath /app/alluxio/alluxio-1.8.0/client/alluxio-1.8.0-client.jar

修改完成后在shell进行测试
如在原hdfs存放一个图片文件在/image/out1/180129175801175-0.jpg路径下。
从shell中读取
val file = sc.textFile("alluxio://hadoop-master-001:19998/image/out1/180129175801175-0.jpg")

至于HA如何在Zookeeper中如何设置,官方文档写的很清楚,自己拿去玩吧。

你可能感兴趣的:(Hadoop,Spark)