Alluxio 简单使用

一、 Alluxio HA

  1. 下载 tar 包,这里选择了 2.0 版本,下载后解压到 cdh01

  2. ssh 免密

  3. 配置:cp conf/alluxio-site.properties.template conf/alluxio-site.properties

    # 主节点,使用 ip 的形式,每个主节点配置自己的 ip,worker 节点不配置
    alluxio.master.hostname=192.168.12.38
    # 配置日志文件目录
    alluxio.master.journal.folder=hdfs://nameservice1/alluxio/journal/
    # 必须配置,否则启动报错,默认使用 EMBEDDED,和 zookeeper 高可用不可共用
    alluxio.master.journal.type=UFS
    
    # 必须配置,否则启动报错,且每个节点需创建该文件夹
    alluxio.worker.tieredstore.level0.dirs.path=/opt/alluxio-2.0.0/ramdisk
    
    # zk 高可用
    alluxio.zookeeper.enabled=true
    alluxio.zookeeper.address=cdh01:2181,cd02:2181,cdh07:2181
    alluxio.zookeeper.session.timeout=120s
    
    # 关联hdfs配置文件
    alluxio.underfs.hdfs.configuration=/etc/hadoop/conf/core-site.xml:/etc/hadoop/conf/hdfs-site.xml
    
  4. 配置 conf/alluxio-env.sh,添加 JAVA_HOME :export JAVA_HOME=/usr/local/jdk1.8.0_231

  5. 配置 conf/nasters 及 conf/workers

  6. 分发到所有 master 和 worker 节点!

  7. 在任一台 master 节点运行格式化操作:./bin/alluxio format

  8. 在任一台 master 节点启动:./bin/alluxio-start.sh all SudoMount,倘若报错,就去每台 worker 节点先执行 ./bin/alluxio-start.sh worker ,然后再 ./bin/alluxio-stop.sh all -> ./bin/alluxio-start.sh all

  9. ./bin/alluxio fs leader 确定 leader,然后页面访问 http://<LEADER_HOSTNAME>:19999

二、HDFS 集成 Alluxio

报错: java.io.IOException No FileSystem for scheme: alluxio

2.1、Configuring core-site.xml

首先在 CDH 集群 core-site.xml 中添加:

<property>
  <name>fs.alluxio.impl</name>
  <value>alluxio.hadoop.FileSystem</value>
</property>
<property>
  <name>alluxio.zookeeper.enabled</name>
  <value>true</value>
</property>
<property>
  <name>alluxio.zookeeper.address</name>
  <value>cdh01:2181,cdh02:2181,cdh07:2181</value>
</property>

2.2、Configuring HADOOP_CLASSPATH

In order for the Alluxio client jar to be available to the MapReduce applications, you must add the Alluxio Hadoop client jar to the $HADOOP_CLASSPATH environment variable in hadoop-env.sh.

In the “YARN (MR2 Included)” section of the Cloudera Manager, in the “Configuration” tab, search for the parameter “Gateway Client Environment Advanced Configuration Snippet (Safety Valve) for hadoop-env.sh”. Then add the following line to the script:

HADOOP_CLASSPATH=/opt/alluxio-2.0.0/client/alluxio-2.0.0-client.jar:${HADOOP_CLASSPATH}

三、Spark 集成 Alluxio

3.1、配置

可直接通过如下命令的方式运行:

spark2-submit --master yarn --conf "spark.driver.extraClassPath=/opt/alluxio-2.0.0/client/alluxio-2.0.0-client.jar" --conf "spark.executor.extraClassPath=/opt/alluxio-2.0.0/client/alluxio-2.0.0-client.jar"

如果运行中配到如下错误:

alluxio.exception.status.UnauthenticatedException: Plain authentication failed: User yarn is not configured for any impersonation. impersonationUser: intellif

在 alluxio-site.properties 中添加如下配置,并重启 alluxio 集群。

# 配置用户模拟,允许yarn用户模拟任意用户
alluxio.master.security.impersonation.yarn.users=*

# 或者配置下面一大段
alluxio.master.security.impersonation.root.users=*
alluxio.master.security.impersonation.root.groups=*
alluxio.master.security.impersonation.client.users=*
alluxio.master.security.impersonation.client.groups=*
alluxio.security.login.impersonation.username=none

3.2、Spark SQL 读取 Alluxio

# 拷贝数据
./bin/alluxio fs copyFromLocal LICENSE /Input

spark2-shell --master yarn --conf "spark.driver.extraClassPath=/opt/alluxio-2.0.0/client/alluxio-2.0.0-client.jar" --conf "spark.executor.extraClassPath=/opt/alluxio-2.0.0/client/alluxio-2.0.0-client.jar"

进入 spark-shell 后运行:

val s = sc.textFile("alluxio://cdh02:19998/Input") // 地址选 leader 地址
val double = s.map(line => line + line)
double.saveAsTextFile("alluxio://cdh02:19998/Output")

四、Hive 集成 Alluxio

4.1、配置

在 hive-env.sh 中添加如下配置:

HIVE_AUX_JARS_PATH=/opt/alluxio-2.0.0/client/alluxio-2.0.0-client.jar:${HIVE_AUX_JARS_PATH}

同时在 alluxio 配置文件 alluxio-site.properties 中添加:

alluxio.master.security.impersonation.hive.users=*

4.2、Hive 内部表关联 Alluxio

# 下载文件
wget http://files.grouplens.org/datasets/movielens/ml-100k.zip
# 解压
unzip ml-100k.zip
# 拷贝到 alluxio,使用 alluxio://hostname:19998 访问失败,改为 alluxio://zk@zkHost1:2181,zkHost2:2181,zkHost3:2181/path
./bin/alluxio fs mkdir /ml-100k
./bin/alluxio fs copyFromLocal /home/intellif/wqf/ml-100k/u.user alluxio://zk@cdh01:2181,cdh02:2181,cdh07:2181/ml-100k/u.user

alluxio ui:

建立 hive 表,把路径关联上即可,和 hdfs 上的表操作差不多:

CREATE TABLE u_user (
  userid INT,
  age INT,
  gender CHAR(1),
  occupation STRING,
  zipcode STRING)
  ROW FORMAT DELIMITED
  FIELDS TERMINATED BY '|'
  STORED AS TEXTFILE
  LOCATION 'alluxio://zk@cdh01:2181,cdh02:2181,cdh07:2181/ml-100k';

其实只要指定 location 就行,其他的话和以前没啥区别。

然后可进行查询等操作:

select * from u_user;

4.3、调整原有 hdfs 上的表读取 alluxio

场景是以前的 hive 表是直接读取 hdfs 的,现在需要调整为 alluxio,这个场景带来的效果是,第一次读取表的时候还是读取 hdfs,但是读取完成时候,数据 hdfs 上加载到 alluxio 上,这个操作的前提是 alluxio 的根路径需要和 hdfs 的根路径关联,这个需要补充的是这里只要实现 hdfs 的路径和 alluxio 是重叠的,alluxio 可以感知到路径被读取了,需要调整配置,重启 alluxio:

alluxio.master.mount.table.root.ufs=hdfs://nameservice1/

接下来的是表的操作,首先是建立一张普通表:

CREATE TABLE u_user_3 (
  userid INT,
  age INT,
  gender CHAR(1),
  occupation STRING,
  zipcode STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
STORED AS TEXTFILE ;

再导入数据:

LOAD DATA LOCAL INPATH '/home/intellif/ml-100k/u.user' OVERWRITE INTO TABLE u_user_3;

desc formatted u_user_3;
OK
# col_name              data_type               comment             
         
userid                  int                                         
age                     int                                         
gender                  char(1)                                     
occupation              string                                      
zipcode                 string                                      
         
# Detailed Table Information         
Database:               bigdata_odl              
OwnerType:              USER                     
Owner:                  admin                    
CreateTime:             Tue May 26 16:28:02 CST 2020     
LastAccessTime:         UNKNOWN                  
Protect Mode:           None                     
Retention:              0                        
Location:               hdfs://nameservice1/user/hive/warehouse/bigdata_odl.db/u_user_3

这里只是普通操作,数据还是存储在 hdfs 中,接下来需要修改表的存储路径到 alluxio 中:

alter table u_user_3 set location "alluxio://zk@cdh01:2181,cdh02:2181,cdh07:2181/user/hive/warehouse/bigdata_odl.db/u_user_3";

再对这个表查询:

select count(*) from  u_user_3;

再去 alluxio 中可以看到表数据被 cache 住了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270