Tachyon的安装、配置和使用

2024-06-20 17:58
文章标签 配置 安装 使用 tachyon

本文主要是介绍Tachyon的安装、配置和使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

发布人:南京大学PASA大数据实验室董乾豪

0. 前言

在上一篇博文《Tachyon简介》中,我们简要地介绍了Tachyon,一个以内存为中心的分布式文件系统,及其一些基本工作原理。这一次,我们重点介绍如何在你自己的单机或集群环境下去安装、配置和使用Tachyon。具体地,会从怎样编译源码开始,到各项配置、命令的说明,再加上API的使用举例,让大家能够一步步地把Tachyon用起来。

版本选择

Tachyon目前的最新发布版为0.5.0,最新开发版为0.6.0-SNAPSHOT。由于两者向上层提供的API有了不小的差异,这里以最新的0.6.0-SNAPSHOT开发版为基础进行介绍。它具有更多功能,更多新特性,更方便用户使用。在介绍时,我们也会标注出那些和0.5.0版本兼容的部分,让大家能够同时Hold住不同的版本。

官方资料: Tachyon-0.5.0; 最新开发版。(本文章介绍的Tachyon基于的版本是0.6.0-SNAPSHOT,2014-12-27)

1. Tachyon的安装

由于目前Tachyon使用了RamFS作为内存层,因此推荐在Linux环境下安装Tachyon。


第①步——下载&编译

对于已经发布的版本,如Tachyon-0.5.0或更早的版本,可以直接下载已经编译好的包,并解压。下载地址为https://github.com/amplab/tachyon/releases

为了更好地契合用户的本地环境,如Java版本、Hadoop版本或其他一些软件包的版本,可以下载Tachyon源码自行编译。Tachyon开源在GitHub上,可以很方便地获得其不同版本的源码:Tachyon-0.5.0;最新开发版。Tachyon项目采用Maven进行管理,因此可以采用 mvn package 命令进行编译打包。在Tachyon-0.6.0-SNAPSHOT版本中,默认依赖的java版本为1.6,默认依赖的hadoop版本为1.0.4,如果要更改这些依赖的版本号可以在编译时加入选项,如:

[plain]  view plain copy
  1. mvn clean package -Djava.version=1.7 -Dhadoop.version=2.3.0 -DskipTests  

完成这一步后,我们就得到了能够运行在用户本地环境的Tachyon,下面我们分别介绍如何在单机和分布式环境下配置和启动Tachyon。

1.1 单机安装Tachyon

这里要注意一点,Tachyon在单机(local)模式下启动时会自动挂载RamFS,所以请保证使用的账户具有sudo权限。


第②步——配置

conf/workers文件中配置需要启动TachyonWorker的节点,默认是localhost,所以在单机模式下不用更改。(在Tachyon-0.5.0版本中,该文件为conf/slaves

conf/tachyon-env.sh.template复制为conf/tachyon-env.sh,并在conf/tachyon-env.sh中修改具体配置,下面列举了一些重要的配置项,稍后会详细地介绍更多的配置项。

  • JAVA_HOME —— 系统中java的安装路径
  • TACHYON_MASTER_ADDRESS —— 启动TachyonMaster的地址,默认为localhost,所以在单机模式下不用更改
  • TACHYON_UNDERFS_ADDRESS —— Tachyon使用的底层文件系统的路径,在单机模式下可以直接使用本地文件系统,如"/tmp/tachyon",也可以使用HDFS,如"hdfs://ip:port"
  • TACHYON_WORKER_MEMORY_SIZE —— 每个TachyonWorker使用的RamFS大小

第③步——启动

完成配置后,即可以单机模式启动Tachyon,格式化、启动和停止Tachyon的命令分别为:

[plain]  view plain copy
  1. bin/tachyon format  
  2. bin/tachyon-start.sh local  
  3. bin/tachyon-stop.sh  

1.2 分布式安装Tachyon

这里我们以一个三个节点的集群为例,分别为slave201,slave202和slave203。三个节点都运行TachyonWorker,slave201运行TachyonMaster。


第②步——配置(该过程在TachyonMaster节点,即slave201上完成)

conf/workers文件中配置需要启动TachyonWorker的节点,即

[plain]  view plain copy
  1. slave201  
  2. slave202  
  3. slave203  

conf/tachyon-env.sh.template复制为conf/tachyon-env.sh,并在conf/tachyon-env.sh中修改具体配置。不同于单机模式,这里需要修改TachyonMaster地址以及底层文件系统路径

[plain]  view plain copy
  1. export TACHYON_MASTER_ADDRESS=slave201  
  2. export TACHYON_UNDERFS_ADDRESS=hdfs://slave201:9000  

完成配置文件的修改后,将整个tachyon文件夹复制到每个节点的相同路径下

[plain]  view plain copy
  1. scp –r tachyon-master slave202:/home/.../  
  2. scp –r tachyon-master slave203:/home/.../  

第③步——启动

在分布式模式下,格式化和停止Tachyon的命令仍然为:

[plain]  view plain copy
  1. bin/tachyon format  
  2. bin/tachyon-stop.sh  

但启动Tachyon有了更多的选项:

  • bin/tachyon-start.sh all Mount #在启动前自动挂载TachyonWorker所使用的RamFS,然后启动TachyonMaster和所有TachyonWorker。由于直接使用mount命令,所以需要用户为root
  • bin/tachyon-start.sh all SudoMount #在启动前自动挂载TachyonWorker所使用的RamFS,然后启动TachyonMaster和所有TachyonWorker。由于使用sudo mount命令,所以需要用户有sudo权限
  • bin/tachyon-start.sh all NoMount #认为RamFS已经挂载好,不执行挂载操作,只启动TachyonMaster和所有TachyonWorker

因此,如果不想每次启动Tachyon都挂载一次RamFS,可以先使用命令 bin/tachyon-mount.sh Mount workers 或 bin/tachyon-mount.sh SudoMount workers 挂载好所有RamFS,然后使用 bin/tachyon-start.sh all NoMount 命令启动Tachyon。


单机和分布式模式的区别就在于配置和启动步骤,事实上,也可以在分布式模式下只设置一个TachyonWorker(伪分布式),在这种情况下两者就基本一样了。


第④步——查看&测试

启动Tachyon后,可以用 jps 命令查看TachyonMaster和TachyonWorker进程是否存在


也可以在浏览器内打开Tachyon的WebUI,如 http://slave201:19999 ,查看整个Tachyon的状态,各个TachyonWorker的运行情况,各项配置信息,浏览文件系统等。




此外,还能在任一启动了TachyonWorker的节点上执行 bin/tachyon runTests 命令来测试Tachyon是否运行正常。

步骤①-④即完成了Tachyon的安装和启动,之后我们也会给出具体地如何使用Tachyon。

2. Tachyon的配置

Tachyon的可配置项远不止上面步骤②的配置文件中的那些,用户可以根据自己的需求更改Tachyon的各项配置。这里以0.6.0-SNAPSHOT版本为例,介绍Tachyon中可配置参数的具体含义。(Tachyon-0.5.0的可配置项基本上是Tachyon-0.6.0-SNAPSHOT的一个子集)

Tachyon中的可配置项分为两类,一种是系统环境变量,用于在不同脚本间共享配置信息;另一种是程序运行参数,通过-D选项传入运行Tachyon的JVM中。程序运行参数又分为通用配置(Common Configuration)、TachyonMaster配置(Master Configuration)、TachyonWorker配置(Worker Configuration)和用户配置(User Configuration)。要修改或添加这些可配置项,请修改conf/tachyon-env.sh文件。

2.1 Tachyon环境变量

  • JAVA_HOME:系统中java的安装路径
  • TACHYON_RAM_FOLDER:配置ramfs挂载的文件目录,默认为/mnt/ramdisk。
  • TACHYON_MASTER_ADDRESS:启动TachyonMaster的地址,默认为localhost,所以在单机模式下不用更改
  • TACHYON_UNDERFS_ADDRESS:Tachyon使用的底层文件系统的路径,本地文件系统(单机模式下),如"/tmp/tachyon",或HDFS,如"hdfs://ip:port"
  • TACHYON_WORKER_MEMORY_SIZE:每个TachyonWorker使用的RamFS大小,默认为1GB

2.2 通用配置

  • tachyon.underfs.address:Tachyon在底层文件系统的的路径,默认为$TACHYON_UNDERFS_ADDRESS
  • tachyon.home:Tachyon的安装路径,启动Tachyon时为当前 tachyon 文件夹的路径
  • tachyon.data.folder:Tachyon数据在底层文件系统的存放路径,默认为$TACHYON_UNDERFS_ADDRESS/tmp/tachyon/data
  • tachyon.workers.folder:TachyonWorkers在底层文件系统的工作路径,默认为$TACHYON_UNDERFS_ADDRESS/tmp/tachyon/workers
  • tachyon.usezookeeper:TachyonMaster是否使用ZooKeeper容错,默认为false。
  • tachyon.zookeeper.adress:如果启用,ZooKeeper的地址
  • tachyon.zookeeper.election.path:如果启用,Zookeeper的election文件夹路径,默认为/election
  • tachyon.zookeeper.leader.path:如果启用,Zookeeper的leader文件夹路径,默认为/leader
  • tachyon.underfs.hdfs.impl:实现HDFS的类,默认org.apache.hadoop.hdfs,DistributedFileSystem
  • tachyon.max.columns:Tachyon中RawTable允许的最大列数,默认为1000
  • tachyon.table.metadata.byte:Tachyon中RawTable元数据允许存储的最大字节数,默认为5242880,即5MB
  • tachyon.underfs.glusterfs.impl:如果使用GlusterFS为底层文件系统,实现GlusterFS的类,默认为org.apache.hadoop.fs.glusterfs.GlusterFileSystem
  • tachyon.underfs.glusterfs.mounts:如果使用GlusterFS为底层文件系统,GlusterFS卷的挂载目录
  • tachyon.underfs.glusterfs.volumes:如果使用GlusterFS为底层文件系统,GlusterFS的卷名
  • tachyon.underfs.glusterfs.mapred.system.dir:如果使用GlusterFS为底层文件系统,GlusterFS用于存放MapReduce中间数据的可选子目录,默认为glusterfs:///mapred/system
  • tachyon.web.resources:Tachyon WebUI可用的资源,默认为$tachyon.home/core/src/main/webapp
  • tachyon.async.enabled:是否启用异步模式,默认为false
  • tachyon.underfs.hadoop.prefixes:底层使用hadoop文件系统的前缀列表,默认为"hdfs://","s3://","s3n://","glusterfs:///"
  • tachyon.test.mode:是否启用测试模式,默认为false
  • tachyon.master.retry:连接重试次数,默认为29

2.3 TachyonMaster配置

  • tachyon.master.worker.timeout.ms:TachyonMaster和TachyonWorker心跳包失效时长,默认为60000ms
  • tachyon.master.journal.folder:TachyonMaster的journal日志存放路径,默认为$TACHYON_HOME/journal/
  • tachyon.master.hostname:TachyonMaster的主机名
  • tachyon.master.port:TachyonMaster的远程调用通讯端口,默认为19998
  • tachyon.master.web.port:TachyonMaster的WebUI端口,默认为19999
  • tachyon.master.web.threads:TachyonMaster的WebUI线程数,默认为9
  • tachyon.master.whitelist:可缓存的路径前缀列表,列表以逗号隔开,表示该路径下的文件能够被缓存至内存,默认为/,即根目录
  • tachyon.master.temporary.folder:TachyonMaster的临时文件夹,默认为/tmp
  • tachyon.master.heartbeat.interval.ms:TachyonMaster心跳包间隔时间,默认为1000ms
  • tachyon.master.selector.threads:TachyonMaster的thrift监听线程数,默认为3
  • tachyon.master.queue.size.per.selector:TachyonMaster的thrift消息队列长度,默认为3000
  • tachyon.master.server.threads:TachyonMaster节点的thrift服务线程数,默认为CPU核数的2倍
  • tachyon.master.pinlist:常驻内存的文件列表,以逗号隔开,表示该路径下的文件不会从内存中剔除,默认为null

2.4 TachyonWorker配置

  • tachyon.worker.data.folder:TachyonWorker在RamFS中的工作路径,默认为$TACHYON_RAM_FOLDER/tachyonworker/
  • tachyon.work.port:TachyonWorker的远程调用通讯端口,默认为29998
  • tachyon.worker.data.port:TachyonWorker的数据传输服务的端口,默认为29999
  • tachyon.worker.memory.size:TachyonWorker所使用的RamFS大小,默认为$TACHYON_WORKER_MEMORY_SIZE
  • tachyon.worker.heartbeat.timeout.ms:TachyonWorker心跳包失效的时长,默认为10000ms
  • tachyon.worker.to.master.heartbeat.interval.ms:TachyonWorker向TachyonMaster发送心跳包的时间间隔,默认为1000ms
  • tachyon.worker.selector.threads:TachyonWorker的thrift监听线程数,默认为3
  • tachyon.worker.queue.size.per.selector:TachyonWorker的thrift消息队列长度,默认为3000
  • tachyon.worker.server.threads:TachyonWorker的thrift服务线程数,默认为CPU核数
  • tachyon.worker.user.timeout.ms:TachyonWorker和用户之间心跳包失效时长,默认为10000ms
  • tachyon.worker.checkpoint.threads:TachyonWorker的checkpoint线程数,默认为1
  • tachyon.worker.per.thread.checkpoint.cap.mb.sec:TachyonWorker的checkpoint的速度,默认为1000MB/s
  • tachyon.worker.network.type:TachyonWorker在传输文件数据时使用的传输方式,默认为NETTY,可选为NIO或NETTY

2.5 用户配置

  • tachyon.user.failed.space.request.limits:用户向文件系统请求空间失败时的最大重试次数,默认为3
  • tachyon.user.quota.unit.bytes:客用户一次向TachyonWorker请求的最少字节数,默认为8388608,即8MB
  • tachyon.user.file.buffer.byte:用户读写文件时的缓存区大小,默认为1048576,即1MB
  • tachyon.user.default.block.size.byte:用户创建文件时的默认块大小,默认为1073741824,即1GB
  • tachyon.user.remote.read.buffer.size.byte:用户读远程文件时的缓冲区大小,默认为1048576,即1MB
  • tachyon.user.heartbeat.interval.ms:用户心跳包时间间隔,默认为1000ms
  • tachyon.user.file.writetype.default:用户在使用tachyon.hadoop.TFS时的默认写类型,默认为CACHE_THROUGH

3. Tachyon的使用

受益于Tachyon良好的设计和兼用性,用户可以很方便地将现有的利用HDFS进行存储的程序移植至Tachyon。同时,Tachyon也提供了自己的命令行工具和一套完整的文件系统API,用户可以灵活地使用Tachyon。

3.1 从HDFS到Tachyon

对于现有的运行在Hadoop MapReduce或者Spark上,使用 "hdfs://ip:port/" 为存储路径的程序,能够很方便地移植至Tachyon。

3.1.1 Hadoop MapReduce

  • 将tachyon-client jar包添加至$HADOOP_CLASSPATH,jar包位于 tachyon/client/target/tachyon-client-0.6.0-SNAPSHOT-jar-with-dependencies.jar(如果是Tachyon-0.5.0,则文件名为tachyon-client-0.5.0-jar-with-dependencies.jar
  • 添加配置项<”fs.tachyon.impl”, ” tachyon.hadoop.TFS”>,可以在core-site.xml文件中添加,也可以在程序中使用Configuration.set()方法添加
  • 将原有的”hdfs://ip:port/path”路径更改为”tachyon://ip:port/path”

3.1.2 Spark

同样地,添加依赖包,添加配置项,然后更改文件系统路径。

额外地,添加配置项<”spark.tachyonStore.url”, “tachyon://ip:port/”>后,能够使用”rdd.persist(StorageLevel.OFF_HEAP)”语句将Spark RDD缓存至Tachyon中以减少Java GC的开销。

3.2 命令行工具

Tachyon提供了命令行工具为用户提供了简单的交互功能,使用方式为

[plain]  view plain copy
  1. bin/tachyon tfs [COMMAND]  

具体的命令有:

  • cat:将文件内容输出到控制台
  • count:输出符合路径前缀的文件总数
  • ls:输出目录中的文件信息
  • lsr:递归输出目录中的文件信息
  • mkdir:创建指定目录包括路径中的父目录,如果目录已经存在则创建失败
  • rm:删除文件或者目录
  • tail:将文件的最末1KB输出到控制台
  • touch:在指定的位置创建空的文件
  • mv:将文件移动到指定位置
  • copyFromLocal:将文件从本地文件系统拷贝到Tachyon文件系统指定位置
  • copyToLocal:将文件从Tachyon文件系统拷贝到本地文件系统指定位置
  • fileinfo:打印指定文件的块信息
  • pin:将指定文件常驻内存
  • unpin:将常驻内存的文件撤销常驻状态

3.3 Java API

Tachyon是用Java开发实现的,因此提供的API也是Java函数。要使用这些API需要依赖tachyon-client jar包,位于 tachyon/client/target/tachyon-client-0.6.0-SNAPSHOT-jar-with-dependencies.jar (如果是Tachyon-0.5.0,则文件名为tachyon-client-0.5.0-jar-with-dependencies.jar)此外,如果是已发布的Tachyon-0.5.0并且目标项目由Maven管理,可以在 pom.xml 文件中添加如下内容以获取依赖包:

[html]  view plain copy
  1. <dependency>  
  2.           <groupId>org.tachyonproject</groupId>  
  3.           <artifactId>tachyon-client</artifactId>  
  4.           <version>0.5.0</version>  
  5.  </dependency>  

(Tachyon-0.5.0和Tachyon-0.6.0-SNAPSHOT提供的Java API一大不同之处在于Tachyon-0.6.0-SNAPSHOT中新增了tachyon.TachyonURI类,用来表示Tachyon文件系统中的路径,类似于Hadoop中的org.apache.hadoop.fs.Path。Tachyon-0.5.0中的大部分API在Tachyon-0.6.0-SNAPSHOT中仍然存在,但被标记为@Deprecated

Tachyon的Java API功能大部分集中于tachyon.client.TachyonFStachyon.client.TachyonFile两个类中

3.3.1 TachyonFS

[java]  view plain copy
  1. //获取TachyonFS对象  
  2. public static TachyonFS get(String tachyonPath) throws IOException  
  3. public static TachyonFS get(final TachyonURI tachyonURI) throws IOException  
  4. public static TachyonFS get(String masterHost, int masterPor boolean zookeeperMode) throws IOException  
  5.   
  6. //创建Tachyon文件  
  7. public int createFile(String path) throws IOException  
  8. public int createFile(TachyonURI path, TachyonURI ufsPath, long blockSizeByte,boolean recursive) throws IOException  
  9.   
  10. //删除Tachyon文件     
  11. public boolean delete(String path,boolean recursive) throws IOException  
  12. public boolean delete(int fileId, TachyonURI path, boolean recursive) throws IOException  
  13.   
  14. //判断文件是否存在  
  15. public boolean exist(TachyonURI path) throws IOException  
  16.   
  17. //获取TachyonFile对象  
  18. public TachyonFile getFile(int fid) throws IOException  
  19. public TachyonFile getFile(int fid,boolean useCachedMetadata) throws IOException  
  20. public TachyonFile getFile(String path) throws IOException  
  21. public TachyonFile getFile(TachyonURI path) throws IOException  
  22. public TachyonFile getFile(String path,boolean useCachedMetadata) throws IOException  
  23. public TachyonFile getFile(TachyonURI path, boolean useCachedMetadata) throws IOException  
  24.   
  25. //判断文件是否为目录  
  26. boolean isDirectory(int fid)  
  27.   
  28. //获取文件状态信息  
  29. public ClientFileInfo getFileStatus(int fileId, TachyonURI path) throws IOException  
  30. public ClientFileInfo getFileStatus(int fileId, boolean useCachedMetadata) throws IOException  
  31. public ClientFileInfo getFileStatus(int fileId, TachyonURI path,boolean useCachedMetadata) throws IOException  
  32.   
  33. //列出指定目录下的文件信息,如果是文件则列出该文件的文件信息  
  34. public List<ClientFileInfo> listStatus(TachyonURI path) throws IOException              
  35.   
  36. //创建指定的目录  
  37. public boolean mkdirs(TachyonURI path, boolean recursive) throws IOException           
  38.   
  39. //重命名文件  
  40. public boolean rename(int fileId, TachyonURI srcPath, TachyonURI dstPath) throws IOException  
  41.   
  42. //设置文件是否常驻内存  
  43. public void setPinned(int fid,boolean pinned) throws IOException  
  44.   
  45. //设置文件常驻内存  
  46. public void pinFile(int fid) throws IOException  
  47.   
  48. //取消文件常驻内存状态  
  49. public void unpinFile(int fid) throws IOException  
  50.   
  51. //判断文件是否常驻内存  
  52. public boolean isPinned(int fid,boolean useCachedMetadata) throws IOException  

3.3.2 TachyonFile

[java]  view plain copy
  1. //获取TachyonFile的输入流,ReadType的类型为CACHE或NO_CACHE  
  2. public InStream getInStream(ReadType readType) throws IOException  
  3.   
  4. //获取TachyonFile的输出流,WriteType的类型为MUST_CACHE,TRY_CACHE,CACHE_THROUGH,THROUGH或ASYNC_THROUGH  
  5. public OutStream getOutStream(WriteType writeType) throws IOException  
  6.   
  7. //获取文件的路径  
  8. public String getPath()  
  9.   
  10. //获取底层文件系统的配置  
  11. public Object getUFSConf()  
  12.   
  13. //判断文件是否完整  
  14. public boolean isComplete() throws IOException  
  15.   
  16. //判断是否为目录  
  17. public boolean isDirectory()  
  18.   
  19. //判断是否为文件  
  20. public boolean isFile()  
  21.   
  22. //判断文件是否全在内存  
  23. public boolean isInMemory() throws IOException  
  24.   
  25. //获取文件的长度  
  26. public long length() throws IOException  
  27.   
  28. //判断文件是否常驻内存  
  29. public boolean needPin()  
  30.   
  31. //重命名文件  
  32. public boolean rename(TachyonURI path) throws IOException  
  33.   
  34. //设置底层文件系统的配置  
  35. public void setUFSConf(Object conf)  
  36.   
  37. //获取文件的创建时间  
  38. public long getCreationTimeMs()  
  39.   
  40. //获取对应块所属的文件名  
  41. public String getLocalFilename(int blockIndex) throws IOException  
  42.   
  43. //获取文件所在的主机集合  
  44. public List<String> getLocationHosts() throws IOException  
  45.   
  46. //获取文件的块数  
  47. public int getNumberOfBlocks() throws IOException  

3.3.3 Tachyon Java API使用Demo

这个Demo使用了上面介绍的Java API实现简单的Tachyon文件读写操作。

[java]  view plain copy
  1. <pre name="code" class="java">import java.io.IOException;  
  2.   
  3. import tachyon.TachyonURI;  
  4. import tachyon.client.FileOutStream;  
  5. import tachyon.client.InStream;  
  6. import tachyon.client.OutStream;  
  7. import tachyon.client.ReadType;  
  8. import tachyon.client.TachyonFS;  
  9. import tachyon.client.TachyonFile;  
  10. import tachyon.client.WriteType;  
  11. import tachyon.util.CommonUtils;  
  12.   
  13. /* 
  14. * 
  15. *   将0~9的数字写到tachyon文件/tmp/test,然后将写入的文件内容读出到控制台。 
  16. * 
  17. */  
  18. public class test {  
  19.     public final TachyonURI masteruri = new TachyonURI("tachyon://slave201:19998");  
  20.     public final TachyonURI filepath = new TachyonURI("/tmp/test");  
  21.     public WriteType writeType = WriteType.CACHE_THROUGH;  
  22.     public ReadType readType = ReadType.CACHE;  
  23.   
  24.     public static void writeFile() throws IOException  
  25.     {  
  26.         TachyonFS tachyonClient = TachyonFS.get(masteruri);  
  27.         if(tachyonClient.exist(filepath)) {  
  28.             tachyonClient.delete(filepath, true);  
  29.         }  
  30.         tachyonClient.createFile(filepath);  
  31.         TachyonFile file = tachyonClient.getFile(filepath);  
  32.         FileOutStream os = (FileOutStream) file.getOutStream(writeType);  
  33.         for(int i = 0; i < 10; i ++)  
  34.         {  
  35.             os.write(Integer.toString(i).getBytes());  
  36.         }  
  37.         os.close();  
  38.         tachyonClient.close();  
  39.     }  
  40.   
  41.     public static void readFile() throws IOException  
  42.     {  
  43.         TachyonFS tachyonClient = TachyonFS.get(masteruri);  
  44.         TachyonFile file = tachyonClient.getFile(filepath);  
  45.         InStream in = file.getInStream(readType);  
  46.         byte[] bytes = new byte[20];  
  47.         in.read(bytes);  
  48.         System.out.println(new String(bytes));  
  49.         in.close();  
  50.         tachyonClient.close();  
  51.     }  
  52.       
  53.     public static void main(String[] args) throws IOException  
  54.     {  
  55.         writeFile();  
  56.         readFile();  
  57.     }  
  58. }  
 

执行后在Tachyon的WebUI上可以查看测试文件的信息,文件内容为预期的字符串"0123456789"


这篇关于Tachyon的安装、配置和使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1078851

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传