当前位置:首页 » 编程软件 » windows编译hadoop

windows编译hadoop

发布时间: 2022-04-18 13:47:50

⑴ hadoop在window10上怎么编译

前言 Windows下运行Hadoop,通常有两种方式:一种是用VM方式安装一个linux操作系统,这样基本可以实现全Linux环境的Hadoop运行;另一种是通过Cygwin模拟Linux环境。后者的好处是使用比较方便,安装过程也简单,本篇文章是介绍第二种方式Cygwin模.

⑵ hadoop编译时出现javac: file not found: 求助!!!!!

有 种可能
1、linux的classpath设置有问题,没有加上"."。
2、你的javac后的classpath设置也不对,wordCount的编译不只是需这一个包,我记得还有别的相关的jar包,只有都加到你的classpath中才能正常编译。

3、这种编译明显是不太合适,在windows上编译好后再导入linux运行比较简单直接一些。
试下看吧。

⑶ 怎么在windows7下编译hadoop 1.0.0 插件

1、下载Eclipse解压。 2、把hadoop-eclipse-plugin-1.1.2.jar放到eclipse的plugs目录下。 我的hadoop集群用的版本:hadoop1.1.2 hadoop0.20以后的版本的安装目录下contrib/没有eclipse的hadoop-*-eclipse-plugin.jar插件,需要自己用ant编译。

⑷ 编译hadoop eclipse插件要联网么

这里用到的hadoop版本是1.1.2,但此插件的编译方面在1.2.0下也通过。)
1)hadoop的eclipse插件源码位于hadoop.home(这里的hadoop.home为你的hadoop主目录)/src/contrib/eclipse-plugin。
ant不外乎是一个build.xml,我们先拿它开刀。
我们找到<target name="jar",里面的元素<相关的先全部删了,然后添加如下的,当然,这里的hadoop-core-XXX.jar,这个XXX是版本号,请根据你下载的hadoop的版本进行设置,也可以在后面的build-contrib.xml中进行设置,这里用变量进行替换,等一下我们再看。

< file="${hadoop.root}/hadoop-core-1.1.2.jar" tofile="${build.dir}/lib/hadoop-core.jar" verbose="true"/>
< file="${hadoop.root}/lib/commons-cli-1.2.jar" todir="${build.dir}/lib" verbose="true"/>
< file="${hadoop.root}/lib/commons-configuration-1.6.jar" tofile="${build.dir}/lib/commons-configuration-1.6.jar" verbose="true"/>
< file="${hadoop.root}/lib/commons-httpclient-3.0.1.jar" tofile="${build.dir}/lib/commons-httpclient-3.0.1.jar" verbose="true"/>
< file="${hadoop.root}/lib/commons-lang-2.4.jar" tofile="${build.dir}/lib/commons-lang-2.4.jar" verbose="true"/>
< file="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar" tofile="${build.dir}/lib/jackson-core-asl-1.8.8.jar" verbose="true"/>
< file="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar" tofile="${build.dir}/lib/jackson-mapper-asl-1.8.8.jar" verbose="true"/>

网上很多文章都说只要这一步就OK了,但实验证明,我们编译的时候会出现找不到类的情况,主要是没有加载那些JAR包。
2)添加JAR包到classpath
还是build.xml文件中,我们找到<path id="classpath">
在其末尾加上:

<fileset dir="${hadoop.root}">
<include name="*.jar"/>
</fileset>
这里把hadoop根目录下的所有JAR包加入到classpath,至于这里为什么要加,我没怎么用Ant,就留给有兴趣的朋友去研究了。
3)改完上面的,当我们在编译的时候,那些需要的JAR包并没有同时添加到生成的JAR内,这样会有错误,所以我们要修改MANIFIEST.MF文件,相信搞过可运行JAR包的朋友都清楚这个文件用一个JAR来说是多么的重要。
在同级目录下找到META-INF/MANIFEST.MF,找到Bundle-ClassPath:,然后添加如下:

classes/,lib/hadoop-core.jar,lib/commons-configuration-1.6.jar,lib/commons-httpclient-3.0.1.jar,lib/commons-lang-2.4.jar,lib/jackson-core-asl-1.8.8.jar,lib/commons-cli-1.2.jar
注意,这一大段不要换行,否则在生成JAR包时会报错。
4)加完这些,可以说实际上编译就已经OK了,但我们需要跟特定的eclipse相结合,所以我们需要配置eclipse的路径,回到我们刚才build.xml文件的上层文件夹,也就是hadoop.home/src/contrib文件夹下。
找到build-contrib.xml文件,找到project,在property最前面加多一个:

<property name="eclipse.home" value="D:/developerTools/eclipse/eclipse" />
这里的D:/xxx是我的eclipse安装路径,注意,需要把原来windows下的\换成linux样式的/,否则会有问题的。

接下来就开始我们正式的编译工作了,假设ant那些我们都配置好了,已经在path中了,并且ant版本高于1.7.2(建议下最新的),然后我们直接在cmd下执行:
可以看到这样的结果:

这里已经生成成功了,接下来我们就可以到hadoop.home/build/contrib/eclipse-plugin下找到hadoop-eclipse-plugin-${version}.jar这样的一个文件,${version}是什么来的?

这里就涉及到一个前面说的版本变量的问题,我们在build-contrib.xml的eclipse.home下面添加一个:

<property name="version" value="1.1.2" />
这里的版本号请根据你自己下的版本来填,填好后,我们再生成后,就可以看到hadoop-eclipse-plugin-1.1.2.jar这样的一个JAR包,这个版本号根据你设的version值来生成的。

我在另外一台电脑编译时,遇到了报找不到log4j配置文件的错误,类似什么master之类的,如果遇到类似这样的错误,错误如下:

可以尝试修改ivy.xml,把里面的dependency里面的conf里面的master修改为default,一般就可以解决了,这个暂时没发现是什么造成的,遇到类似的问题就可以找找ivy.xml里面的问题。

编译完成后,我们把hadoop-eclipse-plugin-XXX.jar包丢进eclipse的plugins目录下,然后重启eclipse就OK了,启动后就可以看到Map/Rece窗口了,这也方便我们运行WordCount等例子。

⑸ 如何在windows下安装Eclipse Hadoop插件

在windows下安装Eclipse Hadoop插件主要安装编译Eclipse-hadoop插件即可。

1、配置环境变量:把下载好的hadoop-2.5.2解压到D盘的根目录下,然后计算机==》属性==》高级系统设置==》环境变量

⑹ 求win10下的hadoop2.6.4编译后的bin和lib,虽然CSDN中有,但是没c币,

在lib这个目录下面,一定有很很多以.jar为后缀的文件(尤其是dt.jar和tools.jar),这是压缩文件,你可以用winRAR解压查看的.SUN公司发布的一些系统类就在这里,是JAVA程序运行所依赖的.例如:在JAVA程序在进行输入和输出的时候要用到很输入输出类,如StreamInput,StreamOutput,你直接在程序的开头写上import java.io.*,编译器就到会lib目录下找相关的系统类. bin的文件夹,里面提供了一些工具,一些命令,供开发或者运行java程序时调用 是java编译时需要调用的程序(如java,javac等)所在的地方。一般是jdk的bin目录,例 : C:\Program Files\Java\jdk1.5.0_22\bin,就是设置path路径所指的目录。

⑺ 如何在Windows下面运行hadoop的MapRece程序

1. 首先登入hadoop 集群里面的一个节点, 创建一个java源文件, 偷懒起见, 基本盗用官方的word count (因为本文的目的是教会你如何快编写和运行一个MapRece程序, 而不是如何写好一个功能齐全的MapRece程序)
内容如下:
import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.maprece.Job;
import org.apache.hadoop.maprece.Mapper;
import org.apache.hadoop.maprece.Recer;
import org.apache.hadoop.maprece.lib.input.FileInputFormat;
import org.apache.hadoop.maprece.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
public class myword {
public static class TokenizerMapper
extends Mapper<Object, Text, Text, IntWritable>{
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
public void map(Object key, Text value, Context context
) throws IOException, InterruptedException {
StringTokenizer itr = new StringTokenizer(value.toString());
while (itr.hasMoreTokens()) {
word.set(itr.nextToken());
context.write(word, one);
}
}
}
public static class IntSumRecer
extends Recer<Text,IntWritable,Text,IntWritable> {
private IntWritable result = new IntWritable();
public void rece(Text key, Iterable<IntWritable> values,
Context context
) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
result.set(sum);
context.write(key, result);
}
}
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
if (otherArgs.length != 2) {
System.err.println('Usage: wordcount <in> <out>');
System.exit(2);
}
Job job = new Job(conf, 'word count');
job.setJarByClass(myword.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumRecer.class);
job.setRecerClass(IntSumRecer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
与官方版本相比, 主要做了两处修改
1) 为了简单起见,去掉了开头的 package org.apache.hadoop.examples;
2) 将类名从 WordCount 改为 myword, 以体现是我们自己的工作成果 :)
2. 拿到hadoop 运行的class path, 主要为编译所用
运行命令
hadoop classpath
保存打出的结果,本文用的hadoop 版本是Pivotal 公司的Pivotal hadoop, 例子:
/etc/gphd/hadoop/conf:/usr/lib/gphd/hadoop/lib/*:/usr/lib/gphd/hadoop/.//*:/usr/lib/gphd/hadoop-hdfs/./:/usr/lib/gphd/hadoop-hdfs/lib/*:/usr/lib/gphd/hadoop-hdfs/.//*:/usr/lib/gphd/hadoop-yarn/lib/*:/usr/lib/gphd/hadoop-yarn/.//*:/usr/lib/gphd/hadoop-maprece/lib/*:/usr/lib/gphd/hadoop-maprece/.//*::/etc/gphd/pxf/conf::/usr/lib/gphd/pxf/pxf-core.jar:/usr/lib/gphd/pxf/pxf-api.jar:/usr/lib/gphd/publicstage:/usr/lib/gphd/gfxd/lib/gemfirexd.jar::/usr/lib/gphd/zookeeper/zookeeper.jar:/usr/lib/gphd/hbase/lib/hbase-common.jar:/usr/lib/gphd/hbase/lib/hbase-protocol.jar:/usr/lib/gphd/hbase/lib/hbase-client.jar:/usr/lib/gphd/hbase/lib/hbase-thrift.jar:/usr/lib/gphd/hbase/lib/htrace-core-2.01.jar:/etc/gphd/hbase/conf::/usr/lib/gphd/hive/lib/hive-service.jar:/usr/lib/gphd/hive/lib/libthrift-0.9.0.jar:/usr/lib/gphd/hive/lib/hive-metastore.jar:/usr/lib/gphd/hive/lib/libfb303-0.9.0.jar:/usr/lib/gphd/hive/lib/hive-common.jar:/usr/lib/gphd/hive/lib/hive-exec.jar:/usr/lib/gphd/hive/lib/postgresql-jdbc.jar:/etc/gphd/hive/conf::/usr/lib/gphd/sm-plugins/*:
3. 编译
运行命令
javac -classpath xxx ./myword.java
xxx部分就是上一步里面取到的class path
运行完此命令后, 当前目录下会生成一些.class 文件, 例如:
myword.class myword$IntSumRecer.class myword$TokenizerMapper.class
4. 将class文件打包成.jar文件
运行命令
jar -cvf myword.jar ./*.class
至此, 目标jar 文件成功生成
5. 准备一些文本文件, 上传到hdfs, 以做word count的input
例子:
随意创建一些文本文件, 保存到mapred_test 文件夹
运行命令
hadoop fs -put ./mapred_test/
确保此文件夹成功上传到hdfs 当前用户根目录下
6. 运行我们的程序
运行命令
hadoop jar ./myword.jar myword mapred_test output
顺利的话, 此命令会正常进行, 一个MapRece job 会开始工作, 输出的结果会保存在 hdfs 当前用户根目录下的output 文件夹里面。
至此大功告成!
如果还需要更多的功能, 我们可以修改前面的源文件以达到一个真正有用的MapRece job。
但是原理大同小异, 练手的话, 基本够了。
一个抛砖引玉的简单例子, 欢迎板砖。

⑻ 如何在Windows中使用Intellij idea搭建远程Hadoop开发环境

(1)准备工作

1) 安装JDK 6或者JDK 7

2) 安装scala 2.10.x (注意版本)

2)下载Intellij IDEA最新版(本文以IntelliJ IDEA Community Edition 13.1.1为例说明,不同版本,界面布局可能不同)

3)将下载的Intellij IDEA解压后,安装scala插件,流程如下:

依次选择“Configure”–> “Plugins”–> “Browse repositories”,输入scala,然后安装即可

(2)搭建Spark源码阅读环境(需要联网)

一种方法是直接依次选择“import project”–> 选择spark所在目录 –>
“SBT”,之后intellij会自动识别SBT文件,并下载依赖的外部jar包,整个流程用时非常长,取决于机器的网络环境(不建议在windows
下操作,可能遇到各种问题),一般需花费几十分钟到几个小时。注意,下载过程会用到git,因此应该事先安装了git。

第二种方法是首先在linux操作系统上生成intellij项目文件,然后在intellij IDEA中直接通过“Open
Project”打开项目即可。在linux上生成intellij项目文件的方法(需要安装git,不需要安装scala,sbt会自动下载)是:在
spark源代码根目录下,输入sbt/sbt gen-idea

注:如果你在windows下阅读源代码,建议先在linux下生成项目文件,然后导入到windows中的intellij IDEA中。

(3)搭建Spark开发环境

在intellij IDEA中创建scala project,并依次选择“File”–> “project structure”
–> “Libraries”,选择“+”,将spark-hadoop
对应的包导入,比如导入spark-assembly_2.10-0.9.0-incubating-hadoop2.2.0.jar(只需导入该jar
包,其他不需要),如果IDE没有识别scala 库,则需要以同样方式将scala库导入。之后开发scala程序即可:

编写完scala程序后,可以直接在intellij中,以local模式运行,方法如下:

点击“Run”–> “Run Configurations”,在弹出的框中对应栏中填写“local”,表示将该参数传递给main函数,如下图所示,之后点击“Run”–> “Run”运行程序即可。

如果想把程序打成jar包,通过命令行的形式运行在spark 集群中,可以按照以下步骤操作:

依次选择“File”–> “Project Structure” –> “Artifact”,选择“+”–>
“Jar” –> “From Moles with
dependencies”,选择main函数,并在弹出框中选择输出jar位置,并选择“OK”。

最后依次选择“Build”–> “Build Artifact”编译生成jar包。

⑼ 怎样用windows eclipse 编程hadoop

1、目标:
在三台ubuntu上搭建hadoop开发环境;
在windows下利用Eclipse访问ubuntu下的hadoop环境,进行开发;
2、软硬件要求:
软件: hadoop-0.20.2 ,jdk-1.6 ,操作系统 ubuntu10.10 , Eclipse3.7 ;
硬件:3台装有ubuntu系统的机器(我使用的是在一台windows xp下利用 VMware workstation 安装了三台ubuntu虚拟机)
3台ubuntu虚拟器使用相同的用户名和密码 如我的用户名都是matt,
3、ubuntu上搭建hadoop环境
(这一步我直接省略,在网上有很多参考),搭建好后的配置文件如下:
core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/matt/HadoopInstall/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<!-- file system properties -->
<property>
<name>fs.default.name</name>
<value>hdfs://tiger:9000</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>tiger:9001</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
4、在windows上安装eclipse3.7,
首先先进行windows系统参数设置,进入C:\WINDOWS\system32\drivers\etc 将hosts中加入主机名与对应Ip的关系
tiger 192.168.200.195
lion 192.168.200.196
wolf 192.168.200.197
(这三台分别是我的三台ubuntu虚拟机的主机名和对应的IP,可以参考我之前写的日志VMware虚拟机与主机共享上网的设置)
在官网下载解压eclipse3.7,然后将hadoop插件直接拷到eclipse的plugins里就可以了(hadoop0.20.2自带的hadoop插件只能支持
eclipse3.3.2以下版本,因此这个插件是我在google中搜索的);重启eclipse 通过点击Window -> Open Perspective -> Other 选择、Map/Rece,图标是个蓝色的象。就可以看到maprece视图了;接下来进行设置maprece开发环境,在
eclipse下端,控制台旁边会多一个Tab,叫“Map/Rece Locations”,在下面空白的地方点右键,选择“New Hadoop location...”,
弹出配置框

其中Location name可以随便起,Map/Rece Master要与你的mapered-site.xml对应,DFS与core-site.xml对应,User name是
unbuntu中搭建hadoop环境的用户名;接下来设置advanced parameter,里面主要注意的是 hadoop.tmp.dir(要与配置文件中的临时
目录一致) 和 hadoop.job.ugi(hadoop环境的用户名和组名 在这里就是 matt ,matt)这个变量名可能在刚开始时不存在,没有关系
先配置好其他的,确认保存。这时打开project Explorer就可以看到DFS Location了

如果在第一次没有hadoop.job.ugi变量的配置时在/hadoop/mapred/system下你是没有查看权限的 也就是查看不
到/matt/HadoopInstall/tmp这个目录,也不能进行删除文件操作,这时再打开advanced parameter,将值配置为上面提到的对应值就
好了(matt,matt);到这里整个配置部分就ok了;
5、运行第一个程序wordcount
在 project Explorer中右键->new ->maprece project 然后点击 configure Hadoop install directory 浏览到 hadoop0.20.2文件夹
下,这样project就会自动把hadoop下的jar包导入到工程,然后把hadoop自带的wordcount源码复制到project src目录下(注意包名要
一致)然后右键 Run As -> Run configuration ,弹出配置窗口单击左边的javap Application 选择WordCount程序,然后在右侧的
Arguments Program arguments 中配置运行参数(hdfs://tiger:9000/user/matt/input hdfs://tiger:9000/user/matt/output 分别对应程
序输入目录和输出目录)点击apply,然后再在wordcount上右键 ->run on hadoop 程序就能运行并在eclipse中打印日志信息了。

⑽ 如何在windows上使用eclipse远程连接hadoop进行程序开发

由于Hadoop主要是部署和应用在Linux环境中的,但是目前鄙人自知能力有限,还无法完全把工作环境转移到linux中去(当然还有点小私心啦,windows下那么多好用的程序到linux下用不了还真有点心疼——比如说快播,O(∩_∩)O~),于是便想着用eclipse来远程连接hadoop进行开发,摸索了一番,下面是其步骤:
1. 首先把hadoop-eclipse-plugin-1.0.4.jar(具体版本视你的hadoop版本而定)放到eclipse安装目录的plugins文件夹中,如果重新打开eclipse后看到有如下视图,则说明你的hadoop插件已经安装成功了:

其中的“hadoop installation directory”配置项用于指向你的hadoop安装目录,在windows下你只需要把下载到的hadoop-1.0.4.tar.gz包解压到某个位置,然后指向这个位置即可。
2. 配置eclipse中的Map/Rece Locations,如下图所示:

其中主机“master”是我在“C:\Windows\System32\drivers\etc\hosts”中自定义的主机名:
218.195.250.80 master
这时如果在eclipse中能看到如下“DFS Locations”,就说明eclipse已经成功连上远程的hadoop了(注意,别忘了把你的视图切换到Map/Rece视图,而不是默认的Java视图):

3. 现在我们来测试《hadoop权威指导》中的MaxTemperature例子程序,建立如下三个类:

Run Configuration中的配置参数为:
hdfs://202.193.75.78:49000/user/hadoop/input/core-site.xml //输入文件,此处有换行
hdfs://202.193.75.78:49000/user/hadoop/output5 //输出目录

这时如果我们运行MaxTemperature类,会报如下错:
12/04/24 15:32:44 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
12/04/24 15:32:44 ERROR security.UserGroupInformation: PriviledgedActionException as:Administrator cause:java.io.IOException: Failed to set permissions of path: \tmp\hadoop-Administrator\mapred\staging\Administrator-519341271\.staging to 0700
Exception in thread "main" java.io.IOException: Failed to set permissions of path: \tmp\hadoop-Administrator\mapred\staging\Administrator-519341271\.staging to 0700

这个是Windows下文件权限问题,在Linux下可以正常运行,不存在这样的问题。
解决方法是,修改hadoop-1.0.4/src/core/org/apache/hadoop/fs/FileUtil.java里面的checkReturnValue,注释掉即可(有些粗暴,在Window下,可以不用检查):
重新编译打包hadoop-core-1.0.4.jar,替换掉hadoop-1.0.4根目录下的hadoop-core-1.0.4.jar即可。(我重新打包的时候出了点问题,就直接以从网上下载的hadoop-core-1.0.2.jar代替hadoop-core-1.0.4.jar了,这样也可以正常运行,下载地址:https://skydrive.live.com/?cid=cf7746837803bc50&id=CF7746837803BC50%211276)
(其实还有另一种简单的办法,我们只需要把hadoop-1.0.4/src/core/org/apache/hadoop/fs/FileUtil.java修改之后重新编译过的class文件加入到原来的hadoop-core-1.0.4.jar包中代替原来的FileUtil.class文件即可,这里有一个已经做好的适合于windows环境的hadoop-core-1.0.4.jar包了,你可以直接下载)
另外,我还遇到了这么一个错误:
org.apache.hadoop.security.AccessControlException:Permission denied:user=Administrator,access=WRITE,inode="tmp":root:supergroup:rwxr-xr-x 。
这个错误有些蹊跷,因为我已经在map/rece locations中配置了用户名是hadoop(hadoop就是我linux上运行hadoop集群的用户名),不知道它为什么还是以Administrator用户身份来方位hadoop的,解决办法如下:
问题原因:本地用户administrator(本机windows用户)想要远程操作hadoop系统,没有权限引起的。
解决办法:
a、如果是测试环境,可以取消hadoop hdfs的用户权限检查。打开conf/hdfs-site.xml,找到dfs.permissions属性修改为false(默认为true)OK了。
b、修改hadoop location参数,在advanced parameter选项卡中,找到hadoop.job.ugi项,将此项改为启动hadoop的用户名即可。(注意第一次设置的时候可能没有hadoop.job.ugi参数,报错后在去看就有了。)
c、因为Eclipse使用hadoop插件提交作业时,会默认以 DrWho 身份去将作业写入hdfs文件系统中,对应的也就是 HDFS 上的/user/hadoop , 由于 DrWho 用户对hadoop目录并没有写入权限,所以导致异常的发生。解决方法为:放开 hadoop 目录的权限 , 命令如下 :$ hadoop fs -chmod 777

热点内容
vpn韩国服务器地址 发布:2025-03-20 07:12:44 浏览:25
打码软件源码 发布:2025-03-20 07:08:06 浏览:109
前端android 发布:2025-03-20 06:50:42 浏览:93
进制转换栈c语言 发布:2025-03-20 06:50:31 浏览:339
myeclipse不自动编译了 发布:2025-03-20 06:41:38 浏览:777
led汽车大灯和卤素灯该选哪个配置 发布:2025-03-20 06:40:55 浏览:917
sql网校 发布:2025-03-20 06:16:42 浏览:279
安卓手机图标排列为什么会混乱 发布:2025-03-20 06:16:05 浏览:761
手机pin初始密码是多少 发布:2025-03-20 06:15:59 浏览:900
javaif常量变量 发布:2025-03-20 06:15:57 浏览:344