分布式配置 tachyon 并执行Hadoop样例 MapReduce
----------此文章。笔者按着tachyon官网教程进行安装并记录。
(本地安装tachyon具体解释:http://blog.csdn.net/u012587561/article/details/51039977 )
笔者执行环境:
- tachyon0.8.2
- hadoop2.7.1(笔者之后用hadoop2.6版本号,也建议用2.6版本号)
- ubuntu14.04(虚拟机共三台)
使用Hadoop 2.x
假设你正在使用2.x版本号的Hadoop集群,你应该不须要像上面那样在core-site.xml
文件里加入属性。但是,有些情况下可能会遇到java.io.IOException:
的错误。比如。当YARN(与Hadoop相对)尝试去訪问Tachyon文件时。可能发生该错误。
No FileSystem for scheme: tachyon
假设遇到该错误。在core-site.xml
文件里加入这些属性,然后重新启动YARN。
<property>
<name>fs.tachyon.impl</name>
<value>tachyon.hadoop.TFS</value>
</property>
<property>
<name>fs.tachyon-ft.impl</name>
<value>tachyon.hadoop.TFSFT</value>
</property>
编译Tachyonclient
为了使Tachyon和你的Hadoop版本号相相应,你必须又一次编译Tachyon Client的Jar包。指明你的Hadoop版本号。你能够在Tachyon文件夹下执行例如以下命令:
$ mvn install -Dhadoop.version=<YOUR_HADOOP_VERSION>
<YOUR_HADOOP_VERSION>
版本号支持非常多不同的Hadoop发行版。比如:mvn
将会编译出适合Apache Hadoop 2.7.1版本号的Tachyon。 请訪问构建Tachyon主分支页面来获取其它发行版本号的支持信息。
install -Dhadoop.version=2.7.1
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
编译成功后。新的TachyonclientJar包能够在例如以下文件夹中找到:
./clients/client/target/tachyon-client-0.8.2-jar-with-dependencies.jar
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
以下的内容将利用这个jar包进行展示。
配置Hadoop
为了能够使TachyonclientJar包对JobClient生效,你能够在
hadoop-env.sh
文件里将HADOOP_CLASSPATH
改动为:$ export HADOOP_CLASSPATH=/<PATH_TO_TACHYON>/
clients/client/target
/tachyon-client-0.8.2-jar-with-dependencies.jar(当然,也能够将该jar包放在其它地方,改动成对应的路径)
该配置让代码能够使用Tachyon的URI来创建和提交作业。
分发TachyonclientJar包
为了让MapRedude作业能够在Tachyon上读写文件。TachyonclientJar包必须被分发到集群的全部节点上。
这使得TaskTracker和JobClient包括全部与Tachyon进行交互訪问所须要的可运行文件。
怎样从Cloudera上增加第三方库这篇文档介绍了分发Jar包的多种方式。
文档中建议通过使用命令行的-libjars
选项。使用分布式缓存来分发TachyonclientJar包。还有一种分发clientJar包的方式就是手动将其分发到Hadoop节点上。以下就是这两种主流方法的介绍:
1.使用-libjars命令行选项 你能够在使用hadoop
的时候加入-libjars命令行选项,指定
jar .../<PATH_TO_TACHYON>/core/client/target/tachyon-client-0.8.2-jar-with-dependencies.jar
为參数。
这条命令会把该Jar包放到Hadoop的DistributedCache中,使全部节点都能够訪问到。比如,以下的命令就是将Tachyon客户端Jar包加入到-libjars
选项中。
$ hadoop jar hadoop-examples-1.2.1.jar wordcount -libjars /<PATH_TO_TACHYON>/core/client/target/tachyon-client-0.8.2-jar-with-dependencies.jar <INPUT FILES> <OUTPUT DIRECTORY>`
2.手动将Jar包分发到全部节点 为了在每一个节点上安装Tachyon,你必须将客户端Jar包tachyon-client-0.8.2-jar-with-dependencies.jar
(位于/<PATH_TO_TACHYON>/core/client/target/
文件夹)放到每一个MapReduce节点的$HADOOP_HOME/lib
(由于版本号不同也可能是$HADOOP_HOME/share/hadoop/common/lib
)文件夹下,然后又一次启动全部的TaskTracker。
该方法要注意的是全部Jar包必须再次安装,由于每一个Jar包都更新到了最新版本号。还有一方面,当该Jar包已经在每一个节点上的时候。就没有必要使用-libjars
命令行选项了。
在本地模式的Tachyon上执行Hadoop wordcount
首先,编译对应Hadoop版本号的Tachyon:
$ mvn clean install -Dhadoop.version=<YOUR_HADOOP_VERSION>
为了方便,我们如果是伪分布式的集群,通过执行例如以下命令启动:
$ cd$HADOOP_HOME$ ./bin/stop-all.sh
$ ./bin/start-all.sh
配置Tachyon。将本地HDFS集群作为其底层存储系统。你须要改动conf/tachyon-env.sh
,增加例如以下语句:
export TACHYON_UNDERFS_ADDRESS=hdfs://localhost:9000
以本地模式启动Tachyon:
$ ./bin/tachyon-stop.sh all
$ ./bin/tachyon-start.sh local
你能够在Tachyon中增加两个简单的文件来执行wordcount。在你的Tachyon文件夹中执行:
$ ./bin/tachyon tfs copyFromLocal LICENSE /wordcount/input.txt
该命令将LICENSE
文件拷贝到Tachyon的文件命名空间中,并指定其路径为/wordcount/input.txt
。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
如今我们执行一个用于wordcount的MapReduce作业。
$ bin/hadoop jar hadoop-examples-1.2.1.jar wordcount -libjars /<PATH_TO_TACHYON>/core/client/target/tachyon-core-client-0.8.2-jar-with-dependencies.jar -Dtachyon.user.file.understoragetype.default=SYNC_PERSIST tachyon://localhost:19998/wordcount/input.txt tachyon://localhost:19998/wordcount/output
hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.1-sources.jar org.apache.hadoop.examples.WordCount -libjars /usr/local/tachyon/clients/client/target/tachyon-client-0.8.2-jar-with-dependencies.jar -Dtachyon.user.file.understoragetype.default=SYNC_PERSIST tachyon://master1:19998/wordcount/input.txt tachyon://master1:19998/wordcount/output
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
作业完毕后,wordcount的结果将存在Tachyon的/wordcount/output
文件夹下。你能够通过执行例如以下命令来查看结果文件:
$ ./bin/tachyon tfs ls /wordcount/output
$ ./bin/tachyon tfs cat /wordcount/output/part-r-00000
你相同能够在底层存储系统HDFS namenode的WebUI上查看该文件。本地HDFS集群的WebUI在localhost:50070。
因为我保存在tachyon://master1:19998/wordcount/output中。故。。
例如以下
在分布式模式的Tachyon上执行Hadoop wordcount
但启动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。
hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.1-sources.jar org.apache.hadoop.examples.WordCount -libjars /usr/local/tachyon/clients/client/target/tachyon-client-0.8.2-jar-with-dependencies.jar -Dtachyon.user.file.understoragetype.default=SYNC_PERSIST /in1 /tmp/wordcount
[图片]
。。
)
tachyon/tachyon-env.sh: line 83: export: 'hdfs://master1:9000' : not a valid identifier Killed 0 processes on worker1
此处是conf/tachyon-env.sh文件出错。应该是你的worker的路径配置错误。如笔者原先是hdfs://master1:9000, 发生如上错误。改动成 TACHYON_UNDERFS_ADDRESS=hdfs://hadoop@master1:9000
即成功。(hadoop为用户组。master1是username,笔者是虚拟机中配置三台节点)
id_rsa.pub后,连接server却报:Agent admitted failure to sign using the key错误。
输入 ssh-add就可以
假设还未能进行无password远程登陆。那就又一次安装ssh,然后将公钥(id_rsa.pub)写入authorized_keys(无password连接列表)。
所有都写进去,然后分别拷贝到对应位置,即能够无password登录。
比方:将A节点的id_rsa.pub的内容复制,并写到B中的authorized_keys文件里,此时A能够无password连接A,而B连接A须要password。由于A的同意列表中没有B)
相互复制写进文本后,就可以相互无password连接。
至于怎样安装ssh,请移步到笔者的hadoop安装的步骤博客中,里面有具体步骤描写。
分布式配置 tachyon 并执行Hadoop样例 MapReduce的更多相关文章
- Eureka 的 Application Client client的执行演示样例
上篇以一个 demo 演示样例介绍了 Eureka 的 Application Service 客户端角色.今天我们继续了解 Eureka 的 Application Client 客 ...
- 图解VC++ opengl环境配置和几个入门样例
VC6下载 http://blog.csdn.net/bcbobo21cn/article/details/44200205 demoproject和glut库下载 http://pan.baidu. ...
- Eureka 的 Application Service client的注冊以及执行演示样例
Eureka 服务器架起来了(关于架设步骤參考博客<Linux 下 Eureka 服务器的部署>),如今怎样把我们要负载均衡的服务器(也就是从 Application Cl ...
- Swift - 自动布局库SnapKit的使用详解1(配置、使用方法、样例)
为了适应各种屏幕尺寸,iOS 6后引入了自动布局(Auto Layout)的概念,通过使用各种 Constraint(约束)来实现页面自适应弹性布局. 在 StoryBoard 中使用约束实现自动布局 ...
- 【React Native开发】React Native配置执行官方样例-刚開始学习的人的福音(8)
),React Native技术交流4群(458982758),请不要反复加群! 欢迎各位大牛,React Native技术爱好者加入交流!同一时候博客左側欢迎微信扫描关注订阅号,移动技术干货,精彩文 ...
- 在Ubuntu下构建Bullet以及执行Bullet的样例程序
在Ubuntu下构建Bullet以及执行Bullet的样例程序 1.找到Bullet的下载页,地址是:https://code.google.com/p/bullet/downloads/list 2 ...
- Thrift源代码分析(八)--总结加一个完整的可执行的Thrift样例
前面七篇文章分析了Thrfit的方方面面,看到这里时应该对Thrift有了深入的理解. Thrift源代码分析(一)-- 基本概念 Thrift源代码分析(二)-- 协议和编解码 Thrift源代码分 ...
- 【Unity 3D 游戏开发】Unity3D 入门 - 工作区域介绍 与 入门演示样例
一. 工作区域具体解释 1. Scence视图 (场景设计面板) scence视图简单介绍 : 展示创建的游戏对象, 能够对全部的游戏对象进行 移动, 操作 和 放置; -- 演示样例 : 创建一个球 ...
- 阿里云 oss python3 样例
阿里云的oss SDK又是不支持python3,头疼头疼. 本想改一改它的SDK,让它支持python2+python3,无奈里面大量的代码使用不带括号的print.工作量恐怖. 幸好oss的使用很e ...
随机推荐
- WIN10系统如何隐藏底部搜索框
右击任务栏,搜索,可以切换三种模式,建议还是显示搜索图标,因为这个搜索还是能比较快速定位到系统功能的,只不过显示搜索框的话比较占地方,不方便
- Android原生webview中js交互
http://www.cnblogs.com/android-blogs/p/4891264.html Html页面和Java代码结合的方式一般用在界面经常被更改 的情况下,可以讲html放在网络中, ...
- 20个Linux防火墙[iptables]应用技巧[转]
1.显示防火墙的状态 以root权限运行下面的命令: # iptables -L -n -v 参数说明: -L:列出规则. -v:显示详细信息.此选项会显示接口名称.规则选项和TOS掩码,以及封包和字 ...
- JSP入门实战下
第一部分简单解说:jsp语法的规范,以及三大编译指令,七个动作指令和九大内置对象,生命周期解说等. 这章主要解说el表达式,核心标签库. 所有代码下载:链接 1.核心标签库(JSTL:c)解说: 1. ...
- VIM自定义快捷键 abort
"在选择模式下系统级复制 vmap ,c "+y<ESC>vmap ,C "+Y<ESC>"在选择模式下系统级剪切vmap ,x x:l ...
- CentOS 7 安装php5.6,Nginx,Memcached环境及配置
安装php5.6版本以后不再需要安装Zend Guard,而是用yum命令安装php-opcache及php-pecl-apcu就可以有效的提高php执行速度. 1. 配置yum源 事先确认yum源的 ...
- V-rep学习笔记:Reflexxes Motion Library 3
路径规划 VS 轨迹规划 轨迹规划的目的是将输入的简单任务描述变为详细的运动轨迹描述.注意轨迹和路径的区别:Trajectory refers to a time history of positio ...
- jQuery live事件说明及移除live事件方法
1.live事件说明 jQuery1.3增加了一个live()方法,下面是手册上的说明: jQuery 1.3中新增的方法.给所有当前以及将来会匹配的元素绑定一个事件处理函数(比如click事件).也 ...
- codevs 1576 最长严格上升子序列
题目链接:http://codevs.cn/problem/1576/ 题目描述 Description 给一个数组a1, a2 ... an,找到最长的上升降子序列ab1<ab2< .. ...
- oracle11g-R2静默安装报错[INS-32013]解决方案
问题描述: oracle静默安装很强大...,参数搞不对.安装就扯dan了....这个报错搞了一个下午.终于搞定了如释负重.... 如果当初选择仅仅安装oracle软件就没多事情.想一步完成(数据库软 ...