Alluxio 簡單使用

一、 Alluxio HA

  1. 下載 tar 包,這里選擇了 2.0 版本,下載后解壓到 cdh01

  2. ssh 免密

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

    # 主節(jié)點,使用 ip 的形式,每個主節(jié)點配置自己的 ip,worker 節(jié)點不配置
    alluxio.master.hostname=192.168.12.38
    # 配置日志文件目錄
    alluxio.master.journal.folder=hdfs://nameservice1/alluxio/journal/
    # 必須配置,否則啟動報錯,默認使用 EMBEDDED,和 zookeeper 高可用不可共用
    alluxio.master.journal.type=UFS
    
    # 必須配置,否則啟動報錯,且每個節(jié)點需創(chuàng)建該文件夾
    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
    
    # 關(guān)聯(lián)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. 分發(fā)到所有 master 和 worker 節(jié)點!

  7. 在任一臺 master 節(jié)點運行格式化操作:./bin/alluxio format

  8. 在任一臺 master 節(jié)點啟動:./bin/alluxio-start.sh all SudoMount,倘若報錯,就去每臺 worker 節(jié)點先執(zhí)行 ./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

# 拷貝數(shù)據(jù)
./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 內(nèi)部表關(guān)聯(lián) 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 表,把路徑關(guān)聯(lián)上即可,和 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 就行,其他的話和以前沒啥區(qū)別。

然后可進行查詢等操作:

select * from u_user;

4.3、調(diào)整原有 hdfs 上的表讀取 alluxio

場景是以前的 hive 表是直接讀取 hdfs 的,現(xiàn)在需要調(diào)整為 alluxio,這個場景帶來的效果是,第一次讀取表的時候還是讀取 hdfs,但是讀取完成時候,數(shù)據(jù) hdfs 上加載到 alluxio 上,這個操作的前提是 alluxio 的根路徑需要和 hdfs 的根路徑關(guān)聯(lián),這個需要補充的是這里只要實現(xiàn) hdfs 的路徑和 alluxio 是重疊的,alluxio 可以感知到路徑被讀取了,需要調(diào)整配置,重啟 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 ;

再導(dǎo)入數(shù)據(jù):

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

這里只是普通操作,數(shù)據(jù)還是存儲在 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 中可以看到表數(shù)據(jù)被 cache 住了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容