Alluxio集群搭建並整合CDH(MR/Hive/Spark)


Linux環境:centos7.4
CDH:5.16.1
Java:1.8.0_131
Alluxio:2.3.0

集群配置

機器數量:50
內存:64G
硬盤:4T
CPU核心數:32

編譯

此處不再贅述,詳見我另一篇文章 https://www.cnblogs.com/daemonyue/p/12975286.html

修改配置文件

cp conf/alluxio-site.properties.template conf/alluxio-site.properties
vim alluxio-site.properties

敲黑板

● 由於博主這邊的集群使用了安全權限控制,此處涉及四條Kerberos相關的配置,如集群沒有使用安全權限控制需自行忽略。
● 如有Alluxio整合Kerberos權限控制的需求,只需添加這四條配置即可。

vim masters

vim workers

集群

復制文件夾到每台機器
各個機器alluxio用戶相互之間免密登陸

軟連接配置

為每個機器設置java軟連接,需要在這些目錄其中之一配置軟連接

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/spark/bin:/opt/spark/sbin:/root/bin

如果配置好了可以忽略,否則:

ln -s /usr/java/jdk1.8.0_131/bin/java /usr/bin/java

如果這里沒有配置好的話,后面步驟就會出現如下錯誤

Error: Cannot find 'java' on path or under $JAVA_HOME/bin.

啟動 Alluxio

創建ramdisk文件夾

之前配置的文件夾路徑,需要先手動創建出來

format

./bin/alluxio format

啟動

./bin/alluxio-start.sh all Mount

如果是root用戶起的,使用Mount,如果是非root用戶起的,用SudoMount。第一次需要這樣,之后啟動直接./bin/alluxio-start.sh all就可以

經過比較長時間的等待,啟動完成

查看web端

http://ip:19999

使用 Alluxio

這里可以把它理解為簡單的文件系統,操作這個文件系統和hdfs非常相似

./bin/alluxio fs 操作命令

比如:

./bin/alluxio fs mkdir /test

集成 MapReduce

修改配置文件

Hadoop的core-site.xml

    <!--alluxio集成mapreduce的操作-->
    <property>
        <name>fs.alluxio.impl</name>
        <value>alluxio.hadoop.FileSystem</value>
        <description>The Alluxio FileSystem (Hadoop 1.x and 2.x)</description>
    </property>
    <property>
        <name>fs.AbstractFileSystem.alluxio.impl</name>
        <value>alluxio.hadoop.AlluxioFileSystem</value>
        <description>The Alluxio AbstractFileSystem (Hadoop 2.x)</description>
    </property>

CDH UI則為

hadoop的hadoop-env.sh

export HADOOP_CLASSPATH=/opt/alluxio/client/alluxio-2.3.0-SNAPSHOT-client.jar:${HADOOP_CLASSPATH}

拷貝jar包到hadoop

cp /opt/alluxio/client/alluxio-2.3.0-SNAPSHOT-client.jar /opt/cloudera/parcels/CDH/lib/hadoop/lib/

● 分發更新后的hadoop配置文件和lib的jar包到每一個hadoop集群節點,重啟hadoop和alluxio

檢查集成mapreduce是否成功

integration/checker/bin/alluxio-checker.sh mapreduce

集成 Hive

修改配置文件

Hive的hive-env.sh

export HIVE_AUX_JARS_PATH=/opt/alluxio/client/alluxio-2.3.0-SNAPSHOT-client.jar:${HIVE_AUX_JARS_PATH}

CDH UI則為

在Alluxio上創建Hive表

有不同的方法可以將Hive與Alluxio整合。這一節討論的是如何將Alluxio作為文件系統的一員(像HDFS)來存儲Hive表。這些表可以是內部的或外部的,新創建的表或HDFS中已存在的表。

使用文件在Alluxio中創建新表

Hive可以使用存儲在Alluxio中的文件來創建新表。設置非常直接並且獨立於其他的Hive表。一個示例就是將頻繁使用的Hive表存在Alluxio上,從而通過直接從內存中讀文件獲得高吞吐量和低延遲。

這里有一個示例展示了在Alluxio上創建Hive的內部表。你可以從http://grouplens.org/datasets/movielens/ 下載數據文件(如:ml-100k.zip)。然后接下該文件,並且將文件u.user上傳到Alluxio的ml-100k/下:

./bin/alluxio fs mkdir /ml-100k
./bin/alluxio fs copyFromLocal ~/ml-100k/u.user alluxio://cdh01:19998//ml-100k

然后創建新的內部表:

hive> CREATE TABLE u_user (
userid INT,
age INT,
gender CHAR(1),
occupation STRING,
zipcode STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\u001'
LOCATION 'alluxio://cdh01:19998//ml-100k';

在ALluxio中使用已經存儲在HDFS中的表

下面的HiveQL語句會將表數據的存儲位置從HDFS轉移到Alluxio中:

hive> alter table u_user set location "alluxio://cdh01:19998/user/hive/warehouse/u_user";

將表的元數據恢復到HDFS

下面的HiveQL語句可以將表的存儲位置恢復到HDFS中:

hive> alter table TABLE_NAME set location "hdfs://cdh01:8020/user/hive/warehouse/u_user";

集成 Spark

修改配置文件

Spark的spark-defaults.conf

spark.driver.extraClassPath   /opt/alluxio/client/alluxio-2.3.0-SNAPSHOT-client.jar
spark.executor.extraClassPath /opt/alluxio/client/alluxio-2.3.0-SNAPSHOT-client.jar

拷貝jar包到spark

cp /opt/alluxio/client/alluxio-2.3.0-SNAPSHOT-client.jar /opt/cloudera/parcels/CDH/lib/spark/lib/
cp /opt/alluxio/client/alluxio-2.3.0-SNAPSHOT-client.jar /opt/cloudera/parcels/CDH/jars/

● 分發更新后的配置文件和lib的jar包到每一個hadoop集群節點,重啟相關服務。

其實對於spark本身而言,這樣子一配置就算是集成alluxio了,因為spark只是計算框架,不需要做存儲,從實現上來說也只是作為客戶端可以對alluxio讀寫就可以。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM