卖不甜枣 发表于 2024-6-22 12:58:43

大数据与云计算——部署Hadoop集群并运行MapReduce集群案例(超等详细!)

大数据与云计算——部署Hadoop集群并运行MapReduce集群案例(超等详细!)

Linux搭建Hadoop集群(CentOS7+hadoop3.2.0+JDK1.8+Mapreduce完全分布式集群)
   本文所用到的版本号: CentOS7 Hadoop3.2.0 JDK1.8
基本概念及重要性

许多小伙伴部署集群用hadoop用mapreduce,却不知道到底部署了什么,有什么用。在部署集群之前先给大家讲一下Hadoop和MapReduce的基本概念,以及它们在大数据处置惩罚中的重要性:
-Hadoop 是一个由Apache基金会开发的开源软件框架,用于在大规模数据集上进行分布式处置惩罚和存储。Hadoop的核心组件包括Hadoop Distributed File System (HDFS)和MapReduce。


[*] HDFS 是一个分布式文件系统,可以在普通的硬件上存储大量的数据。HDFS将数据分割成多个块,然后在集群中的多个节点上进行分布式存储,从而提供了高容错性和高吞吐量。
[*] MapReduce 是一种编程模型,用于处置惩罚和生成大数据集。MapReduce任务包括两个阶段:Map阶段和Reduce阶段。在Map阶段,输入数据被分割成多个独立的块,然后并行处置惩罚。在Reduce阶段,处置惩罚效果被合并成一个最终的输出。
Hadoop和MapReduce在大数据处置惩罚中的重要性主要体现在以下几点:

[*] 可扩展性:Hadoop可以在数百或数千台机器上运行,处置惩罚PB级别的数据。
[*] 容错性:Hadoop可以自动处置惩罚节点故障,包管数据的可靠性和完整性。
[*] 本钱效益:Hadoop可以在普通的硬件上运行,降低了大数据处置惩罚的本钱。
[*] 灵活性:MapReduce编程模型可以处置惩罚结构化和非结构化的数据,顺应各种类型的数据处置惩罚任务。
下面正式进入正题话!
一、直接选择root用户登录并关闭防火墙

https://img-blog.csdnimg.cn/8db3bd57f9664fbcb196c05d4bb35e81.png
直接选择root用户登录,避免了普通用户授权和切换用户导致的一些情况问题,简单来说就是高效、方便。
然后关闭防火墙:
systemctl stop firewalld//关闭防火墙
https://img-blog.csdnimg.cn/cde3b6716612430dabd153dd0d089f16.png
systemctl disable firewalld//关闭开机自启
https://img-blog.csdnimg.cn/561f5e54adc04b3da825600900e4ed4c.png
systemctl status firewalld//查看防火墙状态
https://img-blog.csdnimg.cn/bb809ff248624086b1f6b9bdf7562e4f.png
让防火墙处于关闭状态。
二、实现ssh免密码登录

配置ssh的无密码访问
ssh-keygen -t rsa
一连按回车
https://img-blog.csdnimg.cn/4cab47184c9e418aa84a883e8fb4569f.png
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
https://img-blog.csdnimg.cn/f655df30d9744079a25970a78b84f0ba.png
设置ssh服务器自动启动
vi ~/.bashrc
在文件的最末尾按O进入编辑模式,加上:
/etc/init.d/ssh start
https://img-blog.csdnimg.cn/ac2365a9a7f9450d8eafa71411ba1801.png
按ESC返回命令模式,输入:wq生存并退出。
让修改马上收效
source ~/.bashrc

https://img-blog.csdnimg.cn/cb3bc719f61241d0ae9d5a8fe1ef6c21.png
检察ssh服务状态。
systemctl status sshd
https://img-blog.csdnimg.cn/fd8e1e309fcd40ce8cc72a7f3c2f01b9.png
三、CentOS7 安装jdk1.8

1、yum安装

[*]安装之前先检察一下有无系统自带jdk,有的话先卸载。
https://img-blog.csdnimg.cn/6dacd9ee677546119130e1c8271a119b.png
卸载自带的jdk:
rpm -e --nodeps 上步查询出的所有jdk
比方:
# rpm -e --nodeps copy-jdk-configs-3.3-10.el7_5.noarch
验证是否已经卸载干净:
java -version

https://img-blog.csdnimg.cn/ed4b14f8dbdd425f8e7ad1c49fd76a60.png
卸载完之后开始安装jdk1.8:
检察可安装的版本
yum list java*
https://img-blog.csdnimg.cn/2d0fe6806b7c47f48a0c2bc654687b8f.png
安装1.8.0版本openjdk
yum -y install java-1.8.0-openjdk*
https://img-blog.csdnimg.cn/d60c900d28d84fa58487096e703773f0.png
https://img-blog.csdnimg.cn/627a8d4aeb8b4ae58f349215b22825f3.png
安装位置检察:
rpm -qa | grep java
rpm -ql java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64
https://img-blog.csdnimg.cn/da814329a8d149aab34f523abb92ef40.png
添加用户情况变量
添加:
export JAVA_HOME=/usr/lib/jvm/java-openjdk
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
https://img-blog.csdnimg.cn/0ccee92a1ae4447da888388fcd936b8f.png
然后执行
source ~/.bashrc

https://img-blog.csdnimg.cn/b7920e7c66b84a83855eb62c566a895a.png
验证安装:
which java
检察java版本信息
java -version

https://img-blog.csdnimg.cn/393829ad915e43fbbbe3654962d39734.png
说明JDK配置完成。
四、下载hadoop

这个链接也有更多3.2.0版本其它的hadoop文件:
https://archive.apache.org/dist/hadoop/common/hadoop-3.2.0/
这里有下载好的hadoop-3.2.0.tar.gz网盘文件链接:
链接:https://pan.baidu.com/s/1a3GJH_fNhUkfaDbckrD8Gg?pwd=2023
下载hadoop文件:
https://img-blog.csdnimg.cn/3ded4db697be430ba838f4f3b3d24b79.png
然后上传文件并解压缩
1.在opt目次下新建一个名为hadoop的目次,并将下载得到的hadoop-3.2.0.tar上传到该目次下
mkdir /opt/hadoop
解压安装:
tar -zxvf hadoop-3.2.0.tar.gz
https://img-blog.csdnimg.cn/3ffc49d7d0c14fa291c4064ea2a74417.png
配置Hadoop情况变量:
vim ~/.bashrc
https://img-blog.csdnimg.cn/8ce8e11b12d24fe2abe8eae7663af224.png
添加hadoop情况变量:
export JAVA_HOME=/usr/lib/jvm/java-openjdk
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
:/opt/hadoop/hadoop-3.2.0/bin:/opt/hadoop/hadoop-3.2.0/sbinexport HADOOP_HOME=/opt/hadoop/hadoop-3.2.0export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native https://img-blog.csdnimg.cn/10da456d6fca4f5cb1d5c6e8ebfa8d9e.png
然后我们执行
source~/.bashrc
使修改的配置文件收效。
https://img-blog.csdnimg.cn/eed7ec95e9cb4f589413f3e7fce747f1.png
五、Hadoop配置文件修改

新建几个目次:
mkdir /root/hadoop
mkdir /root/hadoop/tmp
mkdir /root/hadoop/var
mkdir /root/hadoop/dfs
mkdir /root/hadoop/dfs/name
mkdir /root/hadoop/dfs/data
https://img-blog.csdnimg.cn/d217847ea7394d32b599e5b8268a7b71.png
修改etc/hadoop中的一系列配置文件
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/core-site.xml
在节点内加入配置:
<configuration>
<property>
      <name>hadoop.tmp.dir</name>
      <value>/root/hadoop/tmp</value>
      <description>Abase for other temporary directories.</description>
   </property>
   <property>
      <name>fs.default.name</name>
      <value>hdfs://master:9000</value>
   </property>
   </configuration>
https://img-blog.csdnimg.cn/bd67b9becaa04d7db0f1abd03ebb1457.png
修改hadoop-env.sh
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/hadoop-env.sh
将 export JAVA_HOME=${JAVA_HOME}
修改为: export JAVA_HOME=/usr/lib/jvm/java-openjdk
说明:修改为自己的JDK路径
https://img-blog.csdnimg.cn/783cc465358e4892ad5d551eee9d89b3.png
修改hdfs-site.xml
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/hdfs-site.xml
在节点内加入配置:
<configuration>
<property>
   <name>dfs.name.dir</name>
   <value>/root/hadoop/dfs/name</value>
   <description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.
   </description>
</property>

<property>
   <name>dfs.data.dir</name>
   <value>/root/hadoop/dfs/data</value>
   <description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.
   </description>
</property>

<property>
   <name>dfs.replication</name>
   <value>2</value>
</property>

<property>
   <name>dfs.permissions</name>
   <value>false</value>
   <description>need not permissions</description>
</property>
</configuration>
https://img-blog.csdnimg.cn/a0e491362f3d4842871899666b39762f.png
新建并且修改mapred-site.xml:
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/mapred-site.xml
在节点内加入配置:
<configuration>
<!-- 配置mapReduce在Yarn上运行(默认本地运行) -->
<property>
   <name>mapreduce.framework.name</name>
   <value>yarn</value>
</property>
</configuration>
https://img-blog.csdnimg.cn/48512e9aad9b442e9ecc399a09a843ee.png
修改workers文件:
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/workers
将内里的localhost删除,添加以下内容(master和node1节点都要修改):
master
node1
https://img-blog.csdnimg.cn/aa9d2dc21f1142318c8d4f6abc1ac7a7.png
注意:上面修改后不能有多余空格,文件中不允许有空行。
也可以修改好master节点的/opt/hadoop/hadoop-3.2.0/etc/hadoop/workers文件,然后一条命令直接分发给集群,如许就不消再修改其它节点的workers文件:
xsync/opt/hadoop/hadoop-3.2.0/etc
修改yarn-site.xml文件:
   HADOOP_CLASSPATH 是设置要运行的类的路径。否则当你用hadoop classname 方式运行程序时会报错,说找不到要运行的类。用hadoop jar jar_name.jar classname 方式运行程序时没问题
这边需要设置hadoop classpath
否则后面mapreduce会报错找不到主类:
hadoop classpath
https://img-blog.csdnimg.cn/99420114d6db40ae9caa521de239e82c.png
记下返回的效果
vi /opt/hadoop/hadoop-3.2.0/etc/hadoop/yarn-site.xml
添加一个配置
<property>      <name>yarn.application.classpath</name>      <value>hadoop classpath
返回信息</value></property> 这是我的yarn-site.xml配置:
<configuration>
      <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
      </property>
      <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>master</value>
      </property>
      <property>
            <name>yarn.application.classpath</name>
            <value>/opt/hadoop/hadoop-3.2.0/etc/hadoop:/opt/hadoop/hadoop-3.2.0/share/hadoop/common/lib/*:/opt/hadoop/hadoop-3.2.0/share/hadoop/common/*:/opt/hadoop/hadoop-3.2.0/share/hadoop/hdfs:/opt/hadoop/hadoop-3.2.0/share/hadoop/hdfs/lib/*:/opt/hadoop/hadoop-3.2.0/share/hadoop/hdfs/*:/opt/hadoop/hadoop-3.2.0/share/hadoop/mapreduce/lib/*:/opt/hadoop/hadoop-3.2.0/share/hadoop/mapreduce/*:/opt/hadoop/hadoop-3.2.0/share/hadoop/yarn:/opt/hadoop/hadoop-3.2.0/share/hadoop/yarn/lib/*:/opt/hadoop/hadoop-3.2.0/share/hadoop/yarn/*</value>
      </property>
</configuration>
https://img-blog.csdnimg.cn/848036e4b7434281bcb86c9b8e6f410d.png
配置hadoop-3.2.0/sbin/目次下start-dfs.sh、start-yarn.sh、stop-dfs.sh、stop-yarn.sh文件
服务启动权限配置
cd /opt/hadoop/hadoop-3.2.0
配置start-dfs.sh与stop-dfs.sh文件

```bash
vi sbin/start-dfs.sh
vi sbin/stop-dfs.sh
都在内里加入下面内容
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
https://img-blog.csdnimg.cn/e10d2c222b7249de9df1a4746ab5d17f.png
配置start-yarn.sh与stop-yarn.sh文件
vi sbin/start-yarn.sh
vi sbin/stop-yarn.sh
加入下面内容
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
https://img-blog.csdnimg.cn/e1b44684b0764b06a7710813b97cc08e.png
https://img-blog.csdnimg.cn/ab5e242121c748d18d2b0e0915961bf3.png
配置好底子设置(SSH、JDK、Hadooop、情况变量、Hadoop和MapReduce配置信息)后,克隆假造机,得到从机node1节点。
https://img-blog.csdnimg.cn/e09cf5b5e08f486f9652b40b632d15ac.png
克隆master主机后,得到从机node1节点。
然后开始修改网卡信息:
vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改node1节点ip信息:
https://img-blog.csdnimg.cn/9496de10912648f395ec67e5b8b897c6.png
修改node1节点主机名:
vi /etc/hostname
https://img-blog.csdnimg.cn/664aef07969b475aa55349dd83be16f1.png
修改node1节点对应的ip 和主机名(主从节点保持同等)
vim /etc/hosts
https://img-blog.csdnimg.cn/4f1744b9404a4302955e1da44a3c52bb.png
主从节点互连ssh试试:
先试试在master节点毗连node1节点
ssh node1
https://img-blog.csdnimg.cn/09c47d8d1c5743afab91f24298b6e461.png
再试试node1节点毗连master节点:
ssh master
https://img-blog.csdnimg.cn/cea8ef679d2946dcbe08afd3b8748ce0.png
OK,互连成功。(按exit可以退出
六、启动Hadoop

因为master是namenode,node1是datanode,所以只需要对master进行初始化操作,也就是对hdfs进行格式化。
进入到master这台机器/opt/hadoop/hadoop-3.2.0/bin目次:
cd /opt/hadoop/hadoop-3.2.0
/bin 执行初始化脚本
./hadoop namenode -format
https://img-blog.csdnimg.cn/b76efbf3b7e04c64b8928e703cf88e19.png
https://img-blog.csdnimg.cn/3ef8f5a0dc784171b44266364f8d9dc8.png
然后执行启动历程:
./sbin/start-all.sh
https://img-blog.csdnimg.cn/d05e052209814cf1bec5fb348fbed49b.png
检察启动历程情况。
jps
https://img-blog.csdnimg.cn/ec4fdd2c42334f1b839bfa438d7071b9.png
master是我们的namenode,该机器的IP是192.168.95.20,在当地电脑访问如下地址:
http://192.168.95.20:9870/
https://img-blog.csdnimg.cn/de85ea4144064df8895499450e3194ef.png
在当地欣赏器里访问如下地址:
http://192.168.95.20:8088/cluster
自动跳转到cluster页面
https://img-blog.csdnimg.cn/bc4979f3a08f49c4b47a45b6cede64c8.png
在hdfs上创建一个目次存放文件
./bin/hdfs dfs -mkdir -p /home/hadoop/myx/wordcount/input

检察分发复制是否正常
./bin/hdfs dfs -ls /home/hadoop/myx/wordcount/input
https://img-blog.csdnimg.cn/3ec7130f0b4740f29e8480b8f7c2e817.png
七、运行MapReduce集群

Mapreduce运行案例:
在hdfs上创建一个目次存放文件
比方
./bin/hdfs dfs -mkdir -p /home/hadoop/myx/wordcount/input

可以先简单地写两个小文件分别为text1和text2,如下所示。
file:text1.txt
hadoop isvery good
mapreduce is very good
vim text1
https://img-blog.csdnimg.cn/6704ce088f6e4e38af321a7c69b41a48.png
然后可以把这两个文件存入HDFS并用WordCount进行处置惩罚.
./bin/hdfs dfs -put text1 /home/hadoop/myx/wordcount/input
https://img-blog.csdnimg.cn/e05e9e0ed6f341a6a1d0fb9f67fa0510.png
检察分发情况
https://img-blog.csdnimg.cn/540f3dda098746cb94f710e1adbef14c.png
运行MapReduce用WordCount进行处置惩罚
./bin/hadoop jar ![在这里插入图片描述](https://img-blog.csdnimg.cn/81fe96bc9823429d8263e450ba417363.png)
/opt/hadoop/hadoop-3.2.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.0.jarwordcount /home/hadoop/myx/wordcount/input /home/hadoop/myx/wordcount/output
https://img-blog.csdnimg.cn/ea9c7626674141bdaf8432a78c47ca5b.png
https://img-blog.csdnimg.cn/68ff42ef9ec24062b2c151a589a14a78.png
最闭幕果会存储在指定的输出目次中,检察输出目次内里可以看到以下内容。
./bin/hdfs dfs -cat /home/hadoop/myx/wordcount/output/part-r-00000*
运行输出效果也可以在web端检察,内里有详细信息:
http://192.168.95.20:9870/
explorer.html#/home/hadoop/myx/wordcount/output https://img-blog.csdnimg.cn/65dbdcf9376c48748039975272c30212.png
https://img-blog.csdnimg.cn/213f600fe08d4417b30fef692277650d.png
以上输出效果为每个单词出现的次数。
再来试试第二个案例:
file:text2.txt
vim text2
hadoop iseasy to learn
mapreduce iseasy to learn
https://img-blog.csdnimg.cn/5f6f5a2044614e80b6177d1d4eda6821.png
在欣赏器端检察新建的input2目次:
https://img-blog.csdnimg.cn/2e23a3974a774149988738cc4dae7f0b.png
运行MapReduce进行处置惩罚,设置输出的目次为output2(输出效果目次不消提前创建,Mapreduce运行过程中会自动生成output2输出目次)。
./bin/hadoop jar /opt/hadoop/hadoop-3.2.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.0.jarwordcount /home/hadoop/myx/wordcount/input2 /home/hadoop/myx/wordcount/output2
https://img-blog.csdnimg.cn/4de3a21b33a740bab06e927309917094.png
https://img-blog.csdnimg.cn/28030075cb3546c5a5f076ea057058a7.png
运行结束后,检察text2的输出效果
./bin/hdfs dfs -cat /home/hadoop/myx/wordcount/output2/part-r-00000*
https://img-blog.csdnimg.cn/c171ef8443074161ad0e25b21c55046e.png
运行输出效果也可以在web端检察,内里有详细信息:
http://192.168.95.20:9870/
explorer.html#/home/hadoop/myx/wordcount/output2 https://img-blog.csdnimg.cn/552623c461994497b6549d26b23c8bc1.png
https://img-blog.csdnimg.cn/7b9323d7ed61469680a49b845e3e75b9.png
以上输出效果为每个单词出现的次数。
我们再自己试试运行测试程序WordCount
先在hadoop当前用户目次下新建文件夹WordCount,在其中创建两个测试文件分别为file1.txt,file2.txt。自行在两个文件中填写内容。
新建文件夹WordCount。
mkdir WordCount
ls
https://img-blog.csdnimg.cn/675b99e1fb4f448a83d7811ebdf2ebb7.png
cd WordCount
vim file1.txt
https://img-blog.csdnimg.cn/06b7d455e732417690252837cee1a479.png
file1.txt文件内容为:
This is the first hadoop test program!
https://img-blog.csdnimg.cn/c2eda85f54534943b832ea879fa339d4.png
vim file2.txt
file2.txt文件内容为:
Thisprogram is not very difficult,but this program is a common hadoop program!
https://img-blog.csdnimg.cn/3d1437c928224a6581c44ddf1f6d4d06.png
然后在Hadoop文件系统HDFS中/home目次下新建文件夹input,并检察其中的内容。详细命令如下。
cd /opt/hadoop/hadoop-3.2.0
./bin/hadoop fs -mkdir /input./bin/hadoop fs -ls / https://img-blog.csdnimg.cn/a054682902404702b58cf17c105596e5.png
在欣赏器端检察:
http://192.168.95.20:9870/
explorer.html#/input https://img-blog.csdnimg.cn/7411b5f2a2104941bf8a6a87064c60d9.png
将WordCount文件夹中file1.txt\file2.txt文件上传到刚刚创建的“input”文件夹。详细命令如下。
./bin/hadoop fs -put /opt/hadoop/hadoop-3.2.0/WordCount/*.txt/input
https://img-blog.csdnimg.cn/751fb21ee7794631b99a171e007ceb82.png
运行Hadoop的示例程序,设置输出的目次为/output(输出效果目次不消提前创建,Mapreduce运行过程中会自动生成/output输出目次)。
./bin/hadoop jar /opt/had![在这里插入图片描述](https://img-blog.csdnimg.cn/abf75678cb6943698c1a26d250317caf.png)
oop/hadoop-3.2.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.0.jarwordcount/input /output
https://img-blog.csdnimg.cn/ddfa5ef5b5fb44df889a25105b4aba7f.png
https://img-blog.csdnimg.cn/9d4f8fb6d0d8411da74c0244cda3d503.png
检察输出效果的文件目次信息和WordCount效果。
使用如下命令检察输出效果的文件目次信息。
./bin/hadoop fs -ls /output
https://img-blog.csdnimg.cn/40cf769e00bf4fbb891849959efc0dfb.png
使用如下命令检察WordCount的效果。
./bin/hdfs dfs -cat /output/part-r-00000*
输出效果如下所示
https://img-blog.csdnimg.cn/606f5e2903ed4a9891f1e36f2611d6a4.png
运行输出效果也可以在web端检察,内里有详细信息:
http://192.168.95.20:9870/
explorer.html#/output https://img-blog.csdnimg.cn/6199d5d72ed0489ea6b3133fd8b633a3.png
以上输出效果为每个单词出现的次数。
至此Centos搭建hadoop集群和运行3个MapReduce集群案例完成!
在这里给大家扩展一下优化Hadoop集群性能和MapReduce任务服从的一些技巧和发起:

[*] 硬件优化:选择得当的硬件配置是进步Hadoop集群性能的关键。比方,使用更快的CPU,更大的内存,更快的硬盘(如SSD),以及高速的网络毗连。
[*] 配置优化:Hadoop和MapReduce的配置参数可以根据详细的工作负载进行调整。比方,可以增加HDFS的块大小以进步大文件的处置惩罚速率,或者调整MapReduce的内存设置以顺应更大的任务。
[*] 数据当地化:尽可能在数据所在的节点上运行MapReduce任务,以减少网络传输的开销。
[*] 并行处置惩罚:通过增加MapReduce任务的并行度,可以更充分地使用集群的资源。
[*] 编程优化:在编写MapReduce程序时,应尽可能减少数据的传输和排序。比方,可以使用Combiner函数来减少Map和Reduce阶段之间的数据传输。
[*] 使用高级工具:一些高级的数据处置惩罚工具,如Apache Hive和Apache Pig,可以自动优化MapReduce任务,使其更高效。
[*] 监控和调试:使用Hadoop自带的监控工具,如Hadoop Web UI和Hadoop Metrics,可以帮助你发现和办理性能问题。
以上只是一些基本的优化技巧和发起,详细的优化计谋需要根据详细需求和情况进行调整。祝各位部署统统顺利!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 大数据与云计算——部署Hadoop集群并运行MapReduce集群案例(超等详细!)