软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 云计算 -> 分布式配置tachyon并运行Hadoop例子MapReduce -> 正文阅读
云计算 最新文章
CentOS7上安装Zabbix(快速安装监控工具Zab
十分钟搭建NeuralStyle服务
solr入门之拼写纠错深入研究及代码Demo
3个netty5的例子,简单介绍netty的用法
RedhatOpenshift云平台注册使用
Akka框架——第一节:并发编程简介
Hadoop实战:Linux报tmp磁盘存储不足
linux安装thrift
感觉快更快规划计划高考韩国
solr相似匹配

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

  2016-04-02 21:01:03

----------此文章,笔者按着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主分支页面来获取其他发行版本的支持信息。



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

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




        
        下面的内容将利用这个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


你可以在Tachyon中加入两个简单的文件来运行wordcount。在你的Tachyon目录中运行:
$ ./bin/tachyon tfs copyFromLocal LICENSE /wordcount/input.txt

该命令将LICENSE文件复制到Tachyon的文件命名空间中,并指定其路径为/wordcount/input.txt

现在我们运行一个用于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



作业完成后,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中。故。。如下

也可这样
hadoop@master1:/usr/local/hadoop$ hadoop dfs -copyFromLocal README.txt /in
然后:

在分布式模式的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

启动分布式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

jps查看是否增加了tachyonMaster进程。


bin/hdfs  dfs  -mkdir -p /in1
bin/hdfs dfs  -put /usr/local/hadoop/input /in1 (将本地input文件夹映射到/in1文件夹中)

将处理文件放入in1中
hadoop dfs -copyFromLocal /usr/local/hadoop/etc/hadoop/*.xml /in1  

 

接下来分布式运行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  
360图书馆 论文大全 母婴/育儿 软件开发资料 网页快照 文字转语音 购物精选 软件 美食菜谱 新闻中心 电影下载 小游戏 Chinese Culture
生肖星座解梦 三沣玩客 拍拍 视频 开发 Android开发 站长 古典小说 网文精选 搜图网 天下美图 中国文化英文 多播视频 装修知识库
2017-1-23 14:34:22
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --