《Spark Cookbook 中文版》一1.8 使用Tachyon作为堆外存储层

简介:

本节书摘来异步社区《Spark Cookbook 中文版》一书中的第1章,第1.8节,作者: 【印度】Rishi Yadav(亚达夫)译者: 顾星竹 , 刘见康 责编: 胡俊英,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.8 使用Tachyon作为堆外存储层

Spark弹性分布式数据集(RDD)很适合在内存上存储数据集,可以在不同应用上存储大量备份。Tachyon可以解决Spark RDD管理的一些挑战性问题,如下所示。

RDD仅存在于Spark应用期间。
计算程序和RDD内存存储共享同样的执行过程;所以,如果一个进程崩溃了,那么内存存储也会消失。
即使处理同样的底层数据,不同作业的RDD是不能共享的,例如使用HDFS数据块。
慢速写入磁盘。
在内存中备份数据,更高的内存占用。
如果需要与其他应用程序共享输出,由于需要磁盘复制速度会非常慢。
Tachyon提供了堆外存储层来解决这些问题。该层(即堆外存储层)不受进程崩溃的影响也不会被垃圾回收器标记,同时也可以让RDD独立于特定的作业或对话之上实现跨应用共享。本质上,数据的一个存储在内存上的单一副本如图1-13所示。


13

1.8.1 具体步骤

1.下载并编译Tachyon(在默认情况下Tachyon配置的Hadoop版本为1.0.4,所以需要从源代码编译,选择正确的Hadoop版本)。替换当前版本,本书所写是版本为0.6.4。

$ wget https://github.com/amplab/tachyon/archive/v<version>.zip

2.解压源代码。

$ unzip  v-<version>.zip

3.为了方便,重命名Tachyon源文件名。

$ mv tachyon-<version> tachyon

4.修改Tachyon文件夹目录。

$ cd tachyon 
   $ mvn -Dhadoop.version=2.4.0 clean package -DskipTests=true
   $ cdconf
   $ sudo mkdir -p /var/tachyon/journal
   $ sudo chown -R hduser:hduser /var/tachyon/journal
   $ sudo mkdir -p /var/tachyon/ramdisk
   $ sudo chown -R hduser:hduser /var/tachyon/ramdisk

   $ mv tachyon-env.sh.template tachyon-env.sh
   $ vi tachyon-env.sh

5.注释下面这行。

export TACHYON_UNDERFS_ADDRESS=$TACHYON_HOME/underfs

6.去掉下面这行前面的注释。

export TACHYON_UNDERFS_ADDRESS=hdfs://localhost:9000

7.修改以下属性。

-Dtachyon.master.journal.folder=/var/tachyon/journal/

   export TACHYON_RAM_FOLDER=/var/tachyon/ramdisk    

   $ sudo mkdir -p /var/log/tachyon
   $ sudo chown -R hduser:hduser /var/log/tachyon
   $ vi log4j.properties

8.用/var/log/tachyon替换${tachyon.home}。

9.在conf目录下创建新文件core-site.xml。

$ sudo vi core-site.xml
 <configuration>
 <property>
     <name>fs.tachyon.impl</name>
     <value>tachyon.hadoop.TFS</value>
   </property>
 </configuration>
 $ cd ~
 $ sudo mv tachyon /opt/infoobjects/
 $ sudochown -R root:root /opt/infoobjects/tachyon
 $ sudochmod -R 755 /opt/infoobjects/tachyon

10.将< tachyon home>/bin加入路径。

$ echo "export PATH=$PATH:/opt/infoobjects/tachyon/bin" >> /home/
hduser/.bashrc

11.重启shell并格式化Tachyon。

$ tachyon format
$ tachyon-start.sh local //you need to enter root password as
RamFS needs to be formatted

Tachyon的网页端口是http://hostname:19998,如图1-14所示。


14

12.运行以下程序观测Tachyon是否运行良好,如图1-15所示。


15

13.以下命令可以随时停止Tachyon。

$ tachyon-stop.sh

14.在Spark上运行Tachyon。

$ spark-shell
    scala> val words = sc.textFile("tachyon://localhost:19998/words")
    scala> words.count
    scala> words.saveAsTextFile("tachyon://localhost:19998/w2")
    scala> val person = sc.textFile("hdfs://localhost:9000/user/
    hduser/person")
    scala> import org.apache.spark.api.java._
    scala> person.persist(StorageLevels.OFF_HEAP)
相关文章
|
3月前
|
存储 缓存 分布式计算
|
6月前
|
存储 SQL 分布式计算
性能优化:Spark SQL中的谓词下推和列式存储
性能优化:Spark SQL中的谓词下推和列式存储
|
存储 分布式计算 NoSQL
基于Tablestore的一站式物联网存储解决方案-Spark 分析
## 前言 上一章节[《基于Tablestore的一站式物联网存储解决方案-数据操作篇》](https://ata.alibaba-inc.com/articles/213053) 为大家介绍了如何读写表格存储Tablestore中的数据。可以看到,无论是主键读写还是索引查询,都属于在线实时查询的场景。这些场景都要求某个查询或某个任务的服务响应时间极低(秒级别甚至毫秒级别)。然而,在共享充电宝场景
389 0
|
存储 分布式计算 大数据
# Apache Spark系列技术直播# 第七讲 【 大数据列式存储之 Parquet/ORC 】
主讲人:诚历(孙大鹏)阿里巴巴计算平台事业部EMR技术专家 简介:Parquet 和 ORC 是大数据生态里最常用到的两个列式存储引擎,这两者在实现上有什异同,哪个效率更好,哪个性能更优,本次分享将和您一起探索两大列式存储。
1637 0
7月31日Spark钉钉群直播【Apache Spark 在存储计算分离趋势下的数据缓存】
在数据上云的大背景下,存储计算分离逐渐成为了大数据处理的一大趋势,计算引擎需要通过网络读写远端的数据,很多情况下 IO 成为了整个计算任务的瓶颈,因而数据缓存成为此类场景下的一个重要的优化手段。本次分享将介绍 Spark 在数据缓存上的一些做法,并将介绍 EMR 自研的 Jindo 存储系统在数据缓存上的应用。
|
存储 分布式计算 Apache
7月24日晚Spark社区直播:【Apache Spark 基于 Apache Arrow 的列式存储优化】
Apache Arrow 是一个基于内存的列式存储标准,旨在解决数据交换和传输过程中,序列化和反序列化带来的开销。目前,Apache Spark 社区的一些重要优化都在围绕 Apache Arrow 展开,本次分享会介绍 Apache Arrow 并分析通过 Arrow 将给 Spark 带来哪些特性。
|
存储 分布式计算 大数据
Spark in action on Kubernetes - 存储篇(一)
在上篇文章中,我们分析了Spark Operator内部的机制,今天我们会讨论一个在大数据领域中最重要的话题 - 存储。大数据已经无声无息的融入了每个人的生活中。大到旅游买房,小到外卖打车,都可以看到通过大数据提供数据分析、数据推荐、数据决策的使用场景。
3705 0
|
分布式计算 Hadoop Spark