软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 云计算 -> 分布式配置tachyon并运行Hadoop例子MapReduce -> 正文阅读

[云计算]分布式配置tachyon并运行Hadoop例子MapReduce


----------此文章,笔者按着tachyon官网教程进行安装并记录。

(本地安装tachyon详解:http://blog.csdn.net/u012587561/article/details/51039977 )

笔者运行环境:

  1. tachyon0.8.2
  2. hadoop2.7.1
  3. ubuntu14.04(虚拟机共三台)

使用Hadoop 2.x


        如果你正在使用2.x版本的Hadoop集群,你应该不需要像上面那样在core-site.xml文件中添加属性。可是,有些情况下可能会遇到java.io.IOException: No FileSystem for scheme: tachyon的错误。例如,当YARN(与Hadoop相对)尝试去访问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>


编译Tachyon客户端


    为了使Tachyon和你的Hadoop版本相对应,你必须重新编译Tachyon Client的Jar包,指明你的Hadoop版本。你可以在Tachyon目录下运行如下命令:

 $ mvn install -Dhadoop.version=<YOUR_HADOOP_VERSION>


    <YOUR_HADOOP_VERSION>版本支持很多不同的Hadoop发行版。例如:mvn install -Dhadoop.version=2.7.1将会编译出适合Apache Hadoop 2.7.1版本的Tachyon。 请访问构建Tachyon主分支页面来获取其他发行版本的支持信息。

[img]http://img.blog.csdn.net/20160401230649657?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

        编译成功后,新的Tachyon客户端Jar包可以在如下目录中找到:

./clients/client/target/tachyon-client-0.8.2-jar-with-dependencies.jar


[img]http://img.blog.csdn.net/20160401230709657?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

        
        下面的内容将利用这个jar包进行展示。

配置Hadoop



为了可以使Tachyon客户端Jar包对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来创建和提交作业。

分发Tachyon客户端Jar包


为了让MapRedude作业可以在Tachyon上读写文件,Tachyon客户端Jar包必须被分发到集群的所有节点上。这使得TaskTracker和JobClient包含所有与Tachyon进行交互访问所需要的可执行文件。
如何从Cloudera上加入第三方库这篇文档介绍了分发Jar包的多种方式。文档中建议通过使用命令行的-libjars选项,使用分布式缓存来分发Tachyon客户端Jar包。另一种分发客户端Jar包的方式就是手动将其分发到Hadoop节点上。下面就是这两种主流方法的介绍:
1.使用-libjars命令行选项 你可以在使用hadoop jar ...的时候加入-libjars命令行选项,指定/<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

[img]http://img.blog.csdn.net/20160401230733408?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
你可以在Tachyon中加入两个简单的文件来运行wordcount。在你的Tachyon目录中运行:
$ ./bin/tachyon tfs copyFromLocal LICENSE /wordcount/input.txt

该命令将LICENSE文件复制到Tachyon的文件命名空间中,并指定其路径为/wordcount/input.txt
[img]http://img.blog.csdn.net/20160401230745486?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
现在我们运行一个用于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
[img]http://img.blog.csdn.net/20160401230754408?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
[img]http://img.blog.csdn.net/20160401230807658?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
[img]http://img.blog.csdn.net/20160401230821189?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
作业完成后,wordcount的结果将存在Tachyon的/wordcount/output目录下。你可以通过运行如下命令来查看结果文件:
$ ./bin/tachyon tfs ls /wordcount/output
$ ./bin/tachyon tfs cat /wordcount/output/part-r-00000

[img]http://img.blog.csdn.net/20160401230843955
你同样可以在底层存储系统HDFS namenode的WebUI上查看该文件,本地HDFS集群的WebUI在localhost:50070
由于我保存在tachyon://master1:19998/wordcount/output中。故。。如下
[img]http://img.blog.csdn.net/20160401230900205
也可这样
hadoop@master1:/usr/local/hadoop$ hadoop dfs -copyFromLocal README.txt /in
然后:
[img]http://img.blog.csdn.net/20160401230911377

在分布式模式的Tachyon上运行Hadoop wordcount


首先配置conf/tachyon-env.sh
添加
 export TACHYON_MASTER_ADDRESS=master1 
 export TACHYON_UNDERFS_ADDRESS=hdfs://hadoop@master1:9000   
 #hdfs://ip:port,其中该参数与hadoop/etc/hadoop/core-size.xml的fs.default.name的value一致


格式化tachyon:bin/tachyon format
[img]http://img.blog.csdn.net/20160401230932658
启动分布式tachyon:
但启动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。
此处使用命令: bin/tachyon-start.sh all SudoMount
[img]http://img.blog.csdn.net/20160401230943033
jps查看是否增加了tachyonMaster进程。
[img]http://img.blog.csdn.net/20160401230951815
[img]http://img.blog.csdn.net/20160401230959096
bin/hdfs  dfs  -mkdir -p /in1
bin/hdfs dfs  -put /usr/local/hadoop/input /in1 (将本地input文件夹映射到/in1文件夹中)
[img]http://img.blog.csdn.net/20160401231007158
将处理文件放入in1中
hadoop dfs -copyFromLocal /usr/local/hadoop/etc/hadoop/*.xml /in1  
[img]http://img.blog.csdn.net/20160401231014909
 [img]http://img.blog.csdn.net/20160401231026221
接下来分布式运行wordcount的MapReduce作业:


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
[图片]
[图片]


[图片]



[图片]

 
分布式作业正常运行,由于程序运行时间较长,建议用小文本次测试。
否则就像笔者一样,半夜等着它运行完才能睡觉 = =
(由于困得不行,故停止运行关机睡觉了。图片大家脑补。。。)
#############################################################################
1.  运行tachyon分布式时候出错:

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是用户名,笔者是虚拟机中配置三台节点)

 
2.  ssh连接失败,或总需要输入密码


     SSH生成id_rsa, id_rsa.pub后,连接服务器却报:Agent admitted failure to sign using the key错误。
        输入  ssh-add即可
    如果还未能进行无密码远程登陆,那就重新安装ssh,然后将公钥(id_rsa.pub)写入authorized_keys(无密码连接列表)。
        全部都写进去,然后分别复制到相应位置,即可以无密码登录。
    比如:将A节点的id_rsa.pub的内容复制,并写到B中的authorized_keys文件中,此时A可以无密码连接A,而B连接A需要密码,因为A的允许列表中没有B)
              相互复制写进文本后,即可相互无密码连接。
  至于如何安装ssh,请移步到笔者的hadoop安装的步骤博客中,里面有详细步骤描写。
  
3.  将近睡觉前,不要启动tachyon了,等着睡觉很痛苦。  


#############################################################################
......显示全文...
    点击查看全文


上一篇文章      下一篇文章      查看所有文章
2016-04-02 21:00:55  
云计算 最新文章
CentOS7上安装Zabbix(快速安装监控工具Zab
十分钟搭建NeuralStyle服务
solr入门之拼写纠错深入研究及代码Demo
3个netty5的例子,简单介绍netty的用法
RedhatOpenshift云平台注册使用
Akka框架——第一节:并发编程简介
Hadoop实战:Linux报tmp磁盘存储不足
linux安装thrift
感觉快更快规划计划高考韩国
solr相似匹配
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年1日历
2018-1-17 14:40:21
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --