基于CentOS的Hadoop分布式环境的搭建开发_Linux

首先,要说明的一点的是,我不想重复发明轮子。如果想要搭建Hadoop环境,网上有很多详细的步骤和命令代码,我不想再重复记录。

其次,我要说的是我也是新手,对于Hadoop也不是很熟悉。但是就是想实际搭建好环境,看看他的庐山真面目,还好,还好,最好看到了。当运行wordcount词频统计的时候,实在是感叹hadoop已经把分布式做的如此之好,即使没有分布式相关经验的人,也只需要做一些配置即可运行分布式集群环境。

好了,言归真传。

在搭建Hadoop环境中你要知道的一些事儿:

1.hadoop运行于Linux系统之上,你要安装Linux操作系统

2.你需要搭建一个运行hadoop的集群,例如局域网内能互相访问的linux系统

3.为了实现集群之间的相互访问,你需要做到ssh无密钥登录

4.hadoop的运行在JVM上的,也就是说你需要安装Java的JDK,并配置好JAVA_HOME

5.hadoop的各个组件是通过XML来配置的。在官网上下载好hadoop之后解压缩,修改/etc/hadoop目录中相应的配置文件

工欲善其事,必先利其器。这里也要说一下,在搭建hadoop环境中使用到的相关软件和工具:

1.VirtualBox——毕竟要模拟几台linux,条件有限,就在VirtualBox中创建几台虚拟机楼

2.CentOS——下载的CentOS7的iso镜像,加载到VirtualBox中,安装运行

3.secureCRT——可以SSH远程访问linux的软件

4.WinSCP——实现windows和Linux的通信

5.JDK for linux——Oracle官网上下载,解压缩之后配置一下即可

6.hadoop2.7.1——可在Apache官网上下载

好了,下面分三个步骤来讲解

Linux环境准备

 配置IP

为了实现本机和虚拟机以及虚拟机和虚拟机之间的通信,VirtualBox中设置CentOS的连接模式为Host-Only模式,并且手动设置IP,注意虚拟机的网关和本机中host-only network 的IP地址相同。配置IP完成后还要重启网络服务以使得配置有效。这里搭建了三台Linux,如下图所示

配置主机名字

对于192.168.56.101设置主机名字hadoop01。并在hosts文件中配置集群的IP和主机名。其余两个主机的操作与此类似

[root@hadoop01 ~]# cat /etc/sysconfig/network
# Created by anaconda
NETWORKING = yes
HOSTNAME = hadoop01
[root@hadoop01 ~]# cat /etc/hosts
127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4
::1     localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.101 hadoop01
192.168.56.102 hadoop02
192.168.56.103 hadoop03 

永久关闭防火墙

service iptables stop(1.下次重启机器后,防火墙又会启动,故需要永久关闭防火墙的命令;2由于用的是CentOS 7,关闭防火墙的命令如下)

systemctl stop firewalld.service    #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动

关闭SeLinux防护系统

改为disabled 。reboot重启机器,使配置生效

[root@hadoop02 ~]# cat /etc/sysconfig/selinux 

# This file controls the state of SELinux on the system
# SELINUX= can take one of these three values:
#   enforcing - SELinux security policy is enforced 

#   permissive - SELinux prints warnings instead of enforcing
#   disabled - No SELinux policy is loaded
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#   targeted - Targeted processes are protected,
#   minimum - Modification of targeted policy Only selected processes are protected
#   mls - Multi Level Security protection
SELINUXTYPE=targeted  

集群SSH免密码登录

首先设置ssh密钥

ssh-keygen -t rsa

拷贝ssh密钥到三台机器

ssh-copy-id 192.168.56.101
<pre name="code" class="plain">ssh-copy-id 192.168.56.102 
ssh-copy-id 192.168.56.103

这样如果hadoop01的机器想要登录hadoop02,直接输入ssh hadoop02

<pre name="code" class="plain">ssh hadoop02 

配置JDK

这里在/home忠诚创建三个文件夹中

tools——存放工具包

softwares——存放软件

data——存放数据

通过WinSCP将下载好的Linux JDK上传到hadoop01的/home/tools中

解压缩JDK到softwares中

<pre name="code" class="plain">tar -zxf jdk-7u76-linux-x64.tar.gz -C /home/softwares 

可见JDK的家目录在/home/softwares/JDK.x.x.x,将该目录拷贝粘贴到/etc/profile文件中,并且在文件中设置JAVA_HOME

export JAVA_HOME=/home/softwares/jdk0_111
export PATH=$PATH:$JAVA_HOME/bin 

保存修改,执行source /etc/profile使配置生效

查看Java jdk是否安装成功:

java -version 

可以将当前节点中设置的文件拷贝到其他节点

scp -r /home/* root@192.168.56.10X:/home 

Hadoop集群安装

集群的规划如下:

101节点作为HDFS的NameNode ,其余作为DataNode;102作为YARN的ResourceManager,其余作为NodeManager。103作为SecondaryNameNode。分别在101和102节点启动JobHistoryServer和WebAppProxyServer

下载hadoop-2.7.3

并将其放在/home/softwares文件夹中。由于hadoop需要JDK的安装环境,所以首先配置/etc/hadoop/hadoop-env.sh的JAVA_HOME

(PS:感觉我用的jdk版本过高了)

接下来依次修改hadoop相应组件对应的XML

修改core-site.xml :

指定namenode地址

修改hadoop的缓存目录

hadoop的垃圾回收机制

<configuration>
  <property>
    <name>fsdefaultFS</name>
    <value>hdfs://101:8020</value>
  </property>
  <property>
    <name>hadooptmpdir</name>
    <value>/home/softwares/hadoop-3/data/tmp</value>
  </property>
  <property>
    <name>fstrashinterval</name>
    <value>10080</value>
  </property> 

</configuration> 

hdfs-site.xml

设置备份数目

关闭权限

设置http访问接口

设置secondary namenode 的IP地址

<configuration>
  <property>
    <name>dfsreplication</name>
    <value>3</value>
  </property>
  <property>
    <name>dfspermissionsenabled</name>
    <value>false</value>
  </property>
  <property>
    <name>dfsnamenodehttp-address</name>
    <value>101:50070</value>
  </property>
  <property>
    <name>dfsnamenodesecondaryhttp-address</name>
    <value>103:50090</value>
  </property>
</configuration> 

 修改mapred-site.xml.template名字为mapred-site.xml

指定mapreduce的框架为yarn,通过yarn来调度

指定jobhitory

指定jobhitory的web端口

开启uber模式——这是针对mapreduce的优化

<configuration>
  <property>
    <name>mapreduceframeworkname</name>
    <value>yarn</value>
  </property>
  <property>
    <name>mapreducejobhistoryaddress</name>
    <value>101:10020</value>
  </property>
  <property>
    <name>mapreducejobhistorywebappaddress</name>
    <value>101:19888</value>
  </property>
  <property>
    <name>mapreducejobubertaskenable</name>
    <value>true</value>
  </property>
</configuration> 

修改yarn-site.xml

指定mapreduce为shuffle

指定102节点为resourcemanager

指定102节点的安全代理

开启yarn的日志

指定yarn日志删除时间

指定nodemanager的内存:8G

指定nodemanager的CPU:8核

<configuration> 

<!-- Site specific YARN configuration properties -->
  <property>
    <name>yarnnodemanageraux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarnresourcemanagerhostname</name>
    <value>102</value>
  </property>
  <property>
    <name>yarnweb-proxyaddress</name>
    <value>102:8888</value>
  </property>
  <property>
    <name>yarnlog-aggregation-enable</name>
    <value>true</value>
  </property>
  <property>
    <name>yarnlog-aggregationretain-seconds</name>
    <value>604800</value>
  </property>
  <property>
    <name>yarnnodemanagerresourcememory-mb</name>
    <value>8192</value>
  </property>
  <property>
    <name>yarnnodemanagerresourcecpu-vcores</name>
    <value>8</value>
  </property> 

</configuration> 

配置slaves

指定计算节点,即运行datanode和nodemanager的节点

192.168.56.101 
192.168.56.102 
192.168.56.103 

先在namenode节点格式化,即101节点上执行:

进入到hadoop主目录: cd /home/softwares/hadoop-3  

执行bin目录下的hadoop脚本: bin/hadoop namenode -format 

出现successful format才算是执行成功(PS,这里是盗用别人的图,不要介意哈)

 以上配置完成后,将其拷贝到其他的机器

Hadoop环境测试

进入hadoop主目录下执行相应的脚本文件

jps命令——java Virtual Machine Process Status,显示运行的java进程

在namenode节点101机器上开启hdfs

[root@hadoop01 hadoop-3]# sbin/start-dfssh
Java HotSpot(TM) Client VM warning: You have loaded library /home/softwares/hadoop-3/lib/native/libhadoopso which might have disabled stack guard The VM will try to fix the stack guard now
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'
16/11/07 16:49:19 WARN utilNativeCodeLoader: Unable to load native-hadoop library for your platform using builtin-java classes where applicable
Starting namenodes on [hadoop01]
hadoop01: starting namenode, logging to /home/softwares/hadoop-3/logs/hadoop-root-namenode-hadoopout
102: starting datanode, logging to /home/softwares/hadoop-3/logs/hadoop-root-datanode-hadoopout
103: starting datanode, logging to /home/softwares/hadoop-3/logs/hadoop-root-datanode-hadoopout
101: starting datanode, logging to /home/softwares/hadoop-3/logs/hadoop-root-datanode-hadoopout
Starting secondary namenodes [hadoop03]
hadoop03: starting secondarynamenode, logging to /home/softwares/hadoop-3/logs/hadoop-root-secondarynamenode-hadoopout 

此时101节点上执行jps,可以看到namenode和datanode已经启动

[root@hadoop01 hadoop-3]# jps
7826 Jps
7270 DataNode
7052 NameNode 

在102和103节点执行jps,则可以看到datanode已经启动

[root@hadoop02 bin]# jps
4260 DataNode
4488 Jps 

[root@hadoop03 ~]# jps
6436 SecondaryNameNode
6750 Jps
6191 DataNode 

启动yarn

在102节点执行

[root@hadoop02 hadoop-3]# sbin/start-yarnsh
starting yarn daemons
starting resourcemanager, logging to /home/softwares/hadoop-3/logs/yarn-root-resourcemanager-hadoopout
101: starting nodemanager, logging to /home/softwares/hadoop-3/logs/yarn-root-nodemanager-hadoopout
103: starting nodemanager, logging to /home/softwares/hadoop-3/logs/yarn-root-nodemanager-hadoopout
102: starting nodemanager, logging to /home/softwares/hadoop-3/logs/yarn-root-nodemanager-hadoopout 

jps查看各节点:

[root@hadoop02 hadoop-3]# jps
4641 ResourceManager
4260 DataNode
4765 NodeManager
5165 Jps 

[root@hadoop01 hadoop-3]# jps
7270 DataNode
8375 Jps
7976 NodeManager
7052 NameNode 

[root@hadoop03 ~]# jps
6915 NodeManager
6436 SecondaryNameNode
7287 Jps
6191 DataNode 

分别启动相应节点的jobhistory和防护进程

[root@hadoop01 hadoop-3]# sbin/mr-jobhistory-daemonsh start historyserver
starting historyserver, logging to /home/softwares/hadoop-3/logs/mapred-root-historyserver-hadoopout
[root@hadoop01 hadoop-3]# jps
8624 Jps
7270 DataNode
7976 NodeManager
8553 JobHistoryServer
7052 NameNode 

[root@hadoop02 hadoop-3]# sbin/yarn-daemonsh start proxyserver
starting proxyserver, logging to /home/softwares/hadoop-3/logs/yarn-root-proxyserver-hadoopout
[root@hadoop02 hadoop-3]# jps
4641 ResourceManager
4260 DataNode
5367 WebAppProxyServer
5402 Jps
4765 NodeManager 

在hadoop01节点,即101节点上,通过浏览器查看节点状况

hdfs上传文件

[root@hadoop01 hadoop-3]# bin/hdfs dfs -put /etc/profile /profile 

运行wordcount程序

[root@hadoop01 hadoop-3]# bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-jar wordcount /profile /fll_out
Java HotSpot(TM) Client VM warning: You have loaded library /home/softwares/hadoop-3/lib/native/libhadoopso which might have disabled stack guard The VM will try to fix the stack guard now
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'
16/11/07 17:17:10 WARN utilNativeCodeLoader: Unable to load native-hadoop library for your platform using builtin-java classes where applicable
16/11/07 17:17:12 INFO clientRMProxy: Connecting to ResourceManager at /102:8032
16/11/07 17:17:18 INFO inputFileInputFormat: Total input paths to process : 1
16/11/07 17:17:19 INFO mapreduceJobSubmitter: number of splits:1
16/11/07 17:17:19 INFO mapreduceJobSubmitter: Submitting tokens for job: job_1478509135878_0001
16/11/07 17:17:20 INFO implYarnClientImpl: Submitted application application_1478509135878_0001
16/11/07 17:17:20 INFO mapreduceJob: The url to track the job: http://102:8888/proxy/application_1478509135878_0001/
16/11/07 17:17:20 INFO mapreduceJob: Running job: job_1478509135878_0001
16/11/07 17:18:34 INFO mapreduceJob: Job job_1478509135878_0001 running in uber mode : true
16/11/07 17:18:35 INFO mapreduceJob: map 0% reduce 0%
16/11/07 17:18:43 INFO mapreduceJob: map 100% reduce 0%
16/11/07 17:18:50 INFO mapreduceJob: map 100% reduce 100%
16/11/07 17:18:55 INFO mapreduceJob: Job job_1478509135878_0001 completed successfully
16/11/07 17:18:59 INFO mapreduceJob: Counters: 52
    File System Counters
        FILE: Number of bytes read=4264
        FILE: Number of bytes written=6412
        FILE: Number of read operations=0
        FILE: Number of large read operations=0
        FILE: Number of write operations=0
        HDFS: Number of bytes read=3940
        HDFS: Number of bytes written=261673
        HDFS: Number of read operations=35
        HDFS: Number of large read operations=0
        HDFS: Number of write operations=8
    Job Counters
        Launched map tasks=1
        Launched reduce tasks=1
        Other local map tasks=1
        Total time spent by all maps in occupied slots (ms)=8246
        Total time spent by all reduces in occupied slots (ms)=7538
        TOTAL_LAUNCHED_UBERTASKS=2
        NUM_UBER_SUBMAPS=1
        NUM_UBER_SUBREDUCES=1
        Total time spent by all map tasks (ms)=8246
        Total time spent by all reduce tasks (ms)=7538
        Total vcore-milliseconds taken by all map tasks=8246
        Total vcore-milliseconds taken by all reduce tasks=7538
        Total megabyte-milliseconds taken by all map tasks=8443904
        Total megabyte-milliseconds taken by all reduce tasks=7718912
    Map-Reduce Framework
        Map input records=78
        Map output records=256
        Map output bytes=2605
        Map output materialized bytes=2116
        Input split bytes=99
        Combine input records=256
        Combine output records=156
        Reduce input groups=156
        Reduce shuffle bytes=2116
        Reduce input records=156
        Reduce output records=156
        Spilled Records=312
        Shuffled Maps =1
        Failed Shuffles=0
        Merged Map outputs=1
        GC time elapsed (ms)=870
        CPU time spent (ms)=1970
        Physical memory (bytes) snapshot=243326976
        Virtual memory (bytes) snapshot=2666557440
        Total committed heap usage (bytes)=256876544
    Shuffle Errors
        BAD_ID=0
        CONNECTION=0
        IO_ERROR=0
        WRONG_LENGTH=0
        WRONG_MAP=0
        WRONG_REDUCE=0
    File Input Format Counters
        Bytes Read=1829
    File Output Format Counters
        Bytes Written=1487 

浏览器中通过YARN查看运行状态

查看最后的词频统计结果

浏览器中查看hdfs的文件系统

[root@hadoop01 hadoop-3]# bin/hdfs dfs -cat /fll_out/part-r-00000
Java HotSpot(TM) Client VM warning: You have loaded library /home/softwares/hadoop-3/lib/native/libhadoopso which might have disabled stack guard The VM will try to fix the stack guard now
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'
16/11/07 17:29:17 WARN utilNativeCodeLoader: Unable to load native-hadoop library for your platform using builtin-java classes where applicable
!=   1
"$-"  1
"$2"  1
"$EUID" 2
"$HISTCONTROL" 1
"$i"  3
"${-#*i}"    1
"0"   1
":${PATH}:"   1
"`id  2
"after" 1
"ignorespace"  1
#    13
$UID  1
&&   1
()   1
*)   1
*:"$1":*)    1
-f   1
-gn`"  1
-gt   1
-r   1
-ru`  1
-u`   1
-un`"  2
-x   1
-z   1
    2
/etc/bashrc   1
/etc/profile  1
/etc/profiled/ 1
/etc/profiled/*sh   1
/usr/bin/id   1
/usr/local/sbin 2
/usr/sbin    2
/usr/share/doc/setup-*/uidgid  1
002   1
022   1
199   1
200   1
2>/dev/null`  1
;    3
;;   1
=    4
>/dev/null   1
By   1
Current 1
EUID=`id    1
Functions    1
HISTCONTROL   1
HISTCONTROL=ignoreboth 1
HISTCONTROL=ignoredups 1
HISTSIZE    1
HISTSIZE=1000  1
HOSTNAME    1
HOSTNAME=`/usr/bin/hostname   1
It's  2
JAVA_HOME=/home/softwares/jdk0_111 1
LOGNAME 1
LOGNAME=$USER  1
MAIL  1
MAIL="/var/spool/mail/$USER"  1
NOT   1
PATH  1
PATH=$1:$PATH  1
PATH=$PATH:$1  1
PATH=$PATH:$JAVA_HOME/bin    1
Path  1
System 1
This  1
UID=`id 1
USER  1
USER="`id    1
You   1
[    9
]    3
];   6
a    2
after  2
aliases 1
and   2
are   1
as   1
better 1
case  1
change 1
changes 1
check  1
could  1
create 1
custom 1
customsh    1
default,    1
do   1
doing 1
done  1
else  5
environment   1
environment,  1
esac  1
export 5
fi   8
file  2
for   5
future 1
get   1
go   1
good  1
i    2
idea  1
if   8
in   6
is   1
it   1
know  1
ksh   1
login  2
make  1
manipulation  1
merging 1
much  1
need  1
pathmunge    6
prevent 1
programs,    1
reservation   1
reserved    1
script 1
set  1
sets  1
setup  1
shell  2
startup 1
system 1
the   1
then  8
this  2
threshold    1
to   5
uid/gids    1
uidgid 1
umask  3
unless 1
unset  2
updates    1
validity    1
want  1
we   1
what  1
wide  1
will  1
workaround   1
you   2
your  1
{    1
}    1 

这就代表hadoop集群正确

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索hadoop分布式搭建
centos hadoop 分布式、hadoop分布式搭建、hadoop伪分布式搭建、hadoop完全分布式搭建、hadoop分布式集群搭建,以便于您获取更多的相关知识。

时间: 2024-10-30 17:33:18

基于CentOS的Hadoop分布式环境的搭建开发_Linux的相关文章

linux 环境下 isap 环境如何搭建 (开发 语言 java ,b/s模式)

问题描述 linux环境下isap环境如何搭建(开发语言java,b/s模式)谢了 解决方案 解决方案二:该回复于2011-04-19 15:05:21被版主删除

一脸懵逼学习基于CentOs的Hadoop集群安装与配置(三台机器跑集群)

1:Hadoop分布式计算平台是由Apache软件基金会开发的一个开源分布式计算平台.以Hadoop分布式文件系统(HDFS)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构.  注意:HADOOP的核心组件有: 1)HDFS(分布式文件系统) 2)YARN(运算资源调度系统) 3)MAPREDUCE(分布式运算编程框架)       Hadoop 中的分布式文件系统 HDFS 由一个管理结点 ( NameNode

hadoop分布式集群搭建

终于要开始玩大数据了,之前对haoop生态几乎没有太多的了解,现在赶鸭子上架,需要完全使用它来做数据中心,这是我的haoop第一篇文章,以后估计会写很多大数据相关的文章.另外有大数据实践经验的网友请联系我,有问题请教谢谢! Hadoop的搭建有三种方式,单机版适合开发调试:伪分布式版,适合模拟集群学习:完全分布式,生产使用的模式.这篇文件介绍如何搭建完全分布式的hadoop集群,一个主节点,三个数据节点为例来讲解. 基础环境 环境准备 1.软件版本 四台服务器配置,系统:centos6.5.内存

详解基于CentOS 6.2下DNS主从复制搭建与部署

1)主从DNS--准备--DNS主从相关理论 1.什么是DNS? 简单的理解,Domain Name System,是互联网一项核心的服务,他作为一个桥梁可以将域名和IP地址相互因素的一个分布式数据库,能够使人更加方便的访问互联网,而不用去记复杂的IP地址. 2.DNS的类型,master/slave架构: Master 这种类型的DNS的这个配置文件中,包括所有主机的主机名等相关信息,一般是我们手动添加修改的,设置完之后我们要重启服务的才能读取到master库里面的数据内容:一般我们在做DNS

5节点Hadoop分布式集群搭建经验分享

本文章我们使用hadoop2.6.0版本配置Hadoop集群,同时配置NameNode+HA.ResourceManager+HA,并使用zookeeper来管理Hadoop集群. 1.1 写在前面的话 1.2 (一)HDFS概述 1.2.1 基础架构 1.NameNode(Master) 1)命名空间管理:命名空间支持对HDFS中的目录.文件和块做类似文件系统的创建.修改.删除.列表文件和目录等基本操作. 2)块存储管理. 1.2.2 HA架构 从上面的架构图可以看出,使用Active Nam

Linux 基于CentOS的LNMP 服务器部署标准 新手简明版_Linux

先最小化安装系统. 一.系统约定 软件源代码包存放位置 /usr/local/src 源码包编译安装位置(prefix) /usr/local/software_name 脚本以及维护程序存放位置 /usr/local/sbin MySQL 数据库位置 /var/lib/mysql(可按情况设置) Nginx 网站根目录 /home/www/wwwroot(可按情况设置) Nginx 虚拟主机日志根目录 /home/www/logs(可按情况设置) Nginx 运行账户 www:www 二.系统

Hadoop 2.x伪分布式环境搭建详细步骤_数据库其它

本文以图文结合的方式详细介绍了Hadoop 2.x伪分布式环境搭建的全过程,供大家参考,具体内容如下 1.修改hadoop-env.sh.yarn-env.sh.mapred-env.sh 方法:使用notepad++(beifeng用户)打开这三个文件 添加代码:export JAVA_HOME=/opt/modules/jdk1.7.0_67 2.修改core-site.xml.hdfs-site.xml.yarn-site.xml.mapred-site.xml配置文件 1)修改core-

hbase分布式集群搭建

hbase和hadoop一样也分为单机版.伪分布式版和完全分布式集群版本,这篇文件介绍如何搭建完全分布式集群环境搭建. hbase依赖于hadoop环境,搭建habase之前首先需要搭建好hadoop的完全集群环境,因此看这篇文章之前需要先看我的上一篇文章:hadoop分布式集群搭建.本文中没有按照独立的zookeeper,使用了hbase自带的zookeeper. 环境准备 hbase软件包: http://mirror.bit.edu.cn/apache/hbase/1.3.1/hbase-

Linux下Hadoop2.6.0集群环境的搭建

本文旨在提供最基本的,可以用于在生产环境进行Hadoop.HDFS分布式环境的搭建,对自己是个总结和整理,也能方便新人学习使用. 基础环境 JDK的安装与配置 现在直接到Oracle官网(http://www.oracle.com/)寻找JDK7的安装包不太容易,因为现在官方推荐JDK8.找了半天才找到JDK下载列表页的地址(http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html).因