1

Posted shuangmu668

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1相关的知识,希望对你有一定的参考价值。

1.实验一:Linux 操作系统环境设置

1.1. 实验目的

完成本实验,您应该能够:

掌握 linux 操作系统环境设置
掌握 hadoop 安装的环境要求

1.2. 实验要求

熟悉常用 Linux 操作系统命令
熟悉 hadoop 安装的环境
了解 linux 修改系统变量命令及各参数

1.3. 实验环境

本实验所需之主要资源环境如表 1-1 所示。
表 1-1 资源环境
服务器集群 单节点,机器最低配置:双核 CPU、8GB 内存、100G 硬盘
运行环境 CentOS.7.3
服务和组件 服务和组件根据实验需求安装

1.4. 实验过程

1.4.1. 实验任务一:配置 Linux 系统基础环境

1.4.1.1查看服务器的IP地址
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:f3:49:ff brd ff:ff:ff:ff:ff:ff
    inet 192.168.120.22/24 brd 192.168.120.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::efa9:7996:bced:a493/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

1.4.1.2设置服务器的主机名称
[root@localhost ~]# hostnamectl set-hostname master
[root@localhost ~]# bash
[root@master ~]# hostname
master

1.4.1.3绑定主机名与 IP 地址
可以将主机名称与 IP 地址绑定,这样就可以通过主机名来访问主机,方便 记忆。同时在后面的配置文件中也可以用主机名来代替 IP 地址表示主机,当 IP 地址改变时,只要修改主机名与 IP 地址的绑定文件,不用在多个配置文件 中去修改。主机名与 IP 地址的绑定文件是本地名字解析文件 hosts,在/etc 目 录中,使用 vi 对该文件进行编辑。
[root@master ~]# vi /etc/hosts
[root@master ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.120.22    master

在其中增加如下一行内容:
192.168.120.22     master
1.4.1.4查看 SSH 服务状态
SSH 为 Secure Shell 的缩写,是专为远程登录会话和其他网络服务提供安 全性的协议。一般的用法是在本地计算机安装 SSH 客服端,在服务器端安装 SSH 服务,然后本地计算机利用 SSH 协议远程登录服务器,对服务器进行管理。这 样可以非常方便地对多台服务器进行管理。同时在 Hadoop 分布式环境下,集群 中的各个节点之间(节点可以看作是一台主机)需要使用 SSH 协议进行通信。因 此 Linux 系统必须安装并启用 SSH 服务。
CentOS 7 默认安装 SSH 服务,可以使用如下命令查看 SSH 的状态。
[root@master ~]# systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2023-02-22 13:06:52 CST; 9min ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 1052 (sshd)
   CGroup: /system.slice/sshd.service
           └─1052 /usr/sbin/sshd -D

Feb 22 13:06:52 localhost.localdomain systemd[1]: Starting OpenSSH server daemon...
Feb 22 13:06:52 localhost.localdomain sshd[1052]: Server listening on 0.0.0.0 port 22.
Feb 22 13:06:52 localhost.localdomain sshd[1052]: Server listening on :: port 22.
Feb 22 13:06:52 localhost.localdomain systemd[1]: Started OpenSSH server daemon.
Feb 22 13:12:32 localhost.localdomain sshd[10878]: Accepted password for root from 192.168.120.1 port 51409 ssh2

​ 看到 active (running)就表示 SSH 已经安装并启用。

1.4.1.5关闭防火墙
[root@master ~]# systemctl disable --now firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

查看防火墙状态
[root@master ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

Feb 22 13:06:50 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
Feb 22 13:06:52 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
Feb 22 13:16:56 master systemd[1]: Stopping firewalld - dynamic firewall daemon...
Feb 22 13:16:56 master systemd[1]: Stopped firewalld - dynamic firewall daemon.

关闭linux防火墙
[root@master ~]# setenforce 0
[root@master ~]# vi /etc/selinux/config
[root@master ~]# cat /etc/selinux/config

# 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 

1.4.1.6创建 hadoop 用户
[root@master ~]# useradd hadoop
设置用户 hadoop 的密码
[root@master ~]# echo "qwerty" | passwd --stdin hadoop
Changing password for user hadoop.
passwd: all authentication tokens updated successfully.

1.4.2. 实验任务二:安装 JAVA 环境

1.4.2.1下载 JDK 安装包
JDK 安 装 包 需 要 在 Oracle 官 网 下 载 , 下 载 地 址 为 : https://www.oracle.com/java /technologies /javase-jdk8-downloads.html, 本教材采用的 Hadoop 2.7.1 所需要的 JDK 版本为 JDK7 以上,这里采用的安装包 为 jdk-8u152-linux-x64.tar.gz。
1.4.2.2卸载自带 OpenJDK
[root@master ~]# rpm -qa | grep java
[root@master ~]# 

1.4.2.3安装 JDK
安装命令如下,将安装包解压到/usr/local/src 目录下
[root@master ~]# tar -xf jdk-8u152-linux-x64.tar.gz -C /usr/local/src

解压完成后,查看目录确认一下。可以看出 JDK 安装在 /usr/local/src/jdk1.8.0_152 目录中。
[root@master src]# ll
total 0
drwxr-xr-x. 8 10 143 255 Sep 14  2017 jdk1.8.0_152

1.4.2.4设置 JAVA 环境变量
[root@master ~]# vi /etc/profile

在文件的最后增加如下两行:
export JAVA_HOME=/usr/local/src/jdk1.8.0_152
export PATH=$PATH:$JAVA_HOME/bin:$PATH

执行 source 使设置生效:
[root@master ~]# source /etc/profile

检查 JAVA 是否可用。
[root@master ~]# echo $JAVA_HOME
/usr/local/src/jdk1.8.0_152

说明 JAVA_HOME 已指向 JAVA 安装目录。
[root@master ~]# java -version
java version "1.8.0_152"
Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)

能够正常显示 Java 版本则说明 JDK 安装并配置成功。

2.实验二 安装 Hadoop 软件

2.1. 实验目标

完成本实验,您应该能够:

掌握 hadoop 的安装步骤
掌握 hadoop 的运行原理
掌握运行 hadoop 的基本命令

2.2. 实验要求

熟悉运行 hadoop 的基本命令
熟悉 hadoop 的运行原理
熟悉 hadoop 的安装步骤

2.3. 实验环境

本实验所需之主要资源环境如表 1-1 所示。
表 1-1 资源环境
服务器集群 单节点,机器最低配置:双核 CPU、8GB 内存、100G 硬盘
运行环境 CentOS.7.3
服务和组件 服务和组件根据实验需求安装

2.4.实验过程

2.4.1获取 Hadoop 安装包

Apache Hadoop 各个版本的下载网址: https://archive.apache.org/dist/hadoop /common/。本教材选用的是 Hadoop 2.7.1 版本,安装包为 hadoop-2.7.1.tar.gz。 需要先下载 Hadoop 安装包,再上传到 Linux 系统的/opt/software 目录。

2.4.2.安装 Hadoop 软件

2.4.2.1. 安装 Hadoop 软件
安装命令如下,将安装包解压到/usr/local/src/目录下
[root@master ~]# tar -xf ~/hadoop-2.7.1.tar.gz -C /usr/local/src

解 压 完 成 后 , 查 看 目 录 确 认 一 下 。 可 以 看 出 Hadoop 安装在 /usr/local/src/hadoop -2.7.1 目录中。
[root@master src]# ll
total 0
drwxr-xr-x. 9 10021 10021 149 Jun 29  2015 hadoop-2.7.1
drwxr-xr-x. 8    10   143 255 Sep 14  2017 jdk1.8.0_152

查看 Hadoop 目录,得知 Hadoop 目录内容如下:
[root@master src]# ll hadoop-2.7.1/
total 28
drwxr-xr-x. 2 10021 10021   194 Jun 29  2015 bin
drwxr-xr-x. 3 10021 10021    20 Jun 29  2015 etc
drwxr-xr-x. 2 10021 10021   106 Jun 29  2015 include
drwxr-xr-x. 3 10021 10021    20 Jun 29  2015 lib
drwxr-xr-x. 2 10021 10021   239 Jun 29  2015 libexec
-rw-r--r--. 1 10021 10021 15429 Jun 29  2015 LICENSE.txt
-rw-r--r--. 1 10021 10021   101 Jun 29  2015 NOTICE.txt
-rw-r--r--. 1 10021 10021  1366 Jun 29  2015 README.txt
drwxr-xr-x. 2 10021 10021  4096 Jun 29  2015 sbin
drwxr-xr-x. 4 10021 10021    31 Jun 29  2015 share

其中:
bin:此目录中存放 Hadoop、HDFS、YARN 和 MapReduce 运行程序和管理软件。
etc:存放 Hadoop 配置文件。 include: 类似 C 语言的头文件
lib:本地库文件,支持对数据进行压缩和解压。
libexe:同 lib sbin:Hadoop 集群启动、停止命令
share:说明文档、案例和依赖 jar 包。
2.4.2.2. 配置 Hadoop 环境变量
修改/etc/profile 文件。
[root@master ~]# vi /etc/profile
在文件的最后增加如下两行:
# HADOOP_HOME 指向 JAVA 安装目录
export HADOOP_HOME=/usr/local/src/hadoop-2.7.1
 
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
执行 source 使用设置生效:
[root@master src]# source /etc/profile

检查设置是否生效:
[root@master src]# hadoop
Usage: hadoop [--config confdir] [COMMAND | CLASSNAME]
  CLASSNAME            run the class named CLASSNAME
 or
  where COMMAND is one of:
  fs                   run a generic filesystem user client
  version              print the version
  jar <jar>            run a jar file
                       note: please use "yarn jar" to launch
                             YARN applications, not this command.
  checknative [-a|-h]  check native hadoop and compression libraries availability
  distcp <srcurl> <desturl> copy file or directories recursively
  archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive
  classpath            prints the class path needed to get the
  credential           interact with credential providers
                       Hadoop jar and the required libraries
  daemonlog            get/set the log level for each daemon
  trace                view and modify Hadoop tracing settings

Most commands print help when invoked w/o parameters.

2.4.2.3. 修改目录所有者和所有者组
上述安装完成的 Hadoop 软件只能让 root 用户使用,要让 hadoop 用户能够 运行 Hadoop 软件,需要将目录/usr/local/src 的所有者改为 hadoop 用户。
[root@master src]# chown -R hadoop:hadoop /usr/local/src
[root@master src]# ll
total 0
drwxr-xr-x. 9 hadoop hadoop 149 Jun 29  2015 hadoop-2.7.1
drwxr-xr-x. 8 hadoop hadoop 255 Sep 14  2017 jdk1.8.0_152

/usr/local/src 目录的所有者已经改为 hadoop 了。

3.实验三 安装单机版 Hadoop 系统

3.1. 实验目标

完成本实验,您应该能够:

掌握 hadoop 的安装步骤
掌握 hadoop 的运行原理
掌握运行 hadoop 的基本命令

3.2. 实验要求

熟悉运行 hadoop 的基本命令
熟悉 hadoop 的运行原理
熟悉 hadoop 的安装步骤

3.3. 实验环境

本实验所需之主要资源环境如表 1-1 所示。
表 1-1 资源环境
服务器集群 单节点,机器最低配置:双核 CPU、8GB 内存、100G 硬盘
运行环境 CentOS.7.3
服务和组件 服务和组件根据实验需求安装

3.4. 实验过程

3.4.1. 配置 Hadoop 配置文件

进入 Hadoop 目录
[root@master src]# cd hadoop-2.7.1/
[root@master hadoop-2.7.1]# 
配置 hadoop-env.sh 文件,目的是告诉 Hadoop 系统 JDK 的安装目录。
[root@master hadoop-2.7.1]# vi etc/hadoop/hadoop-env.sh

在文件中查找 export JAVA_HOME 这行,将其改为如下所示内容。
export JAVA_HOME=/usr/local/src/jdk1.8.0_152

3.4.2. 测试 Hadoop 本地模式的运 行

3.4.2.1. 切换到 hadoop 用户
使用 hadoop 这个用户来运行 Hadoop 软件。
[root@master hadoop-2.7.1]# su - hadoop
[hadoop@master ~]$ 
3.4.2.2. 创建输入数据存放目录
将输入数据存放在~/input 目录(hadoop 用户主目录下的 input 目录中)。
[root@master ~]# mkdir input
[root@master ~]# cd input


3.4.2.3.创建数据输入文件
创建数据文件 data.txt,将要测试的数据内容输入到 data.txt 文件中。
[root@master input]# touch data.txt
[root@master input]# ls
data.txt

输入如下内容,保存退出。

hello shuangmu
hello hadoop
hello world
查看data.txt
[root@master input]# cat data.txt
hello shuangmu
hello hadoop
hello world

3.4.2.4. 测试 MapReduce 运行
运行 WordCount 官方案例,统计 data.txt 文件中单词的出现频度。这个案 例可以用来统计年度十大热销产品、年度风云人物、年度最热名词等。命令如下:
[root@master mapreduce]# hadoop jar /usr/local/src/hadoop-2.7.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount ~/input/data.txt ~/output
23/02/22 14:36:53 INFO Configuration.deprecation: session.id is deprecated. Instead, use dfs.metrics.session-id
23/02/22 14:36:53 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
23/02/22 14:36:53 INFO input.FileInputFormat: Total input paths to process : 1
23/02/22 14:36:53 INFO mapreduce.JobSubmitter: number of splits:1
23/02/22 14:36:54 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_local706531480_0001
23/02/22 14:36:54 INFO mapreduce.Job: The url to track the job: http://localhost:8080/
23/02/22 14:36:54 INFO mapreduce.Job: Running job: job_local706531480_0001
23/02/22 14:36:54 INFO mapred.LocalJobRunner: OutputCommitter set in config null
23/02/22 14:36:54 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
23/02/22 14:36:54 INFO mapred.LocalJobRunner: OutputCommitter is org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter
23/02/22 14:36:54 INFO mapred.LocalJobRunner: Waiting for map tasks
23/02/22 14:36:54 INFO mapred.LocalJobRunner: Starting task: attempt_local706531480_0001_m_000000_0
23/02/22 14:36:54 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
23/02/22 14:36:54 INFO mapred.Task:  Using ResourceCalculatorProcessTree : [ ]
23/02/22 14:36:54 INFO mapred.MapTask: Processing split: file:/root/input/data.txt:0+40
23/02/22 14:36:54 INFO mapred.MapTask: (EQUATOR) 0 kvi 26214396(104857584)
23/02/22 14:36:54 INFO mapred.MapTask: mapreduce.task.io.sort.mb: 100
23/02/22 14:36:54 INFO mapred.MapTask: soft limit at 83886080
23/02/22 14:36:54 INFO mapred.MapTask: bufstart = 0; bufvoid = 104857600
23/02/22 14:36:54 INFO mapred.MapTask: kvstart = 26214396; length = 6553600
23/02/22 14:36:54 INFO mapred.MapTask: Map output collector class = org.apache.hadoop.mapred.MapTask$MapOutputBuffer
23/02/22 14:36:54 INFO mapred.LocalJobRunner: 
23/02/22 14:36:54 INFO mapred.MapTask: Starting flush of map output
23/02/22 14:36:54 INFO mapred.MapTask: Spilling map output
23/02/22 14:36:54 INFO mapred.MapTask: bufstart = 0; bufend = 64; bufvoid = 104857600
23/02/22 14:36:54 INFO mapred.MapTask: kvstart = 26214396(104857584); kvend = 26214376(104857504); length = 21/6553600
23/02/22 14:36:54 INFO mapred.MapTask: Finished spill 0
23/02/22 14:36:54 INFO mapred.Task: Task:attempt_local706531480_0001_m_000000_0 is done. And is in the process of committing
23/02/22 14:36:54 INFO mapred.LocalJobRunner: map
23/02/22 14:36:54 INFO mapred.Task: Task \'attempt_local706531480_0001_m_000000_0\' done.
23/02/22 14:36:54 INFO mapred.LocalJobRunner: Finishing task: attempt_local706531480_0001_m_000000_0
23/02/22 14:36:54 INFO mapred.LocalJobRunner: map task executor complete.
23/02/22 14:36:54 INFO mapred.LocalJobRunner: Waiting for reduce tasks
23/02/22 14:36:54 INFO mapred.LocalJobRunner: Starting task: attempt_local706531480_0001_r_000000_0
23/02/22 14:36:54 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
23/02/22 14:36:54 INFO mapred.Task:  Using ResourceCalculatorProcessTree : [ ]
23/02/22 14:36:54 INFO mapred.ReduceTask: Using ShuffleConsumerPlugin: org.apache.hadoop.mapreduce.task.reduce.Shuffle@47814579
23/02/22 14:36:54 INFO reduce.MergeManagerImpl: MergerManager: memoryLimit=334338464, maxSingleShuffleLimit=83584616, mergeThreshold=220663392, ioSortFactor=10, memToMemMergeOutputsThreshold=10
23/02/22 14:36:54 INFO reduce.EventFetcher: attempt_local706531480_0001_r_000000_0 Thread started: EventFetcher for fetching Map Completion Events
23/02/22 14:36:54 INFO reduce.LocalFetcher: localfetcher#1 about to shuffle output of map attempt_local706531480_0001_m_000000_0 decomp: 54 len: 58 to MEMORY
23/02/22 14:36:54 INFO reduce.InMemoryMapOutput: Read 54 bytes from map-output for attempt_local706531480_0001_m_000000_0
23/02/22 14:36:54 INFO reduce.MergeManagerImpl: closeInMemoryFile -> map-output of size: 54, inMemoryMapOutputs.size() -> 1, commitMemory -> 0, usedMemory ->54
23/02/22 14:36:54 INFO reduce.EventFetcher: EventFetcher is interrupted.. Returning
23/02/22 14:36:54 INFO mapred.LocalJobRunner: 1 / 1 copied.
23/02/22 14:36:54 INFO reduce.MergeManagerImpl: finalMerge called with 1 in-memory map-outputs and 0 on-disk map-outputs
23/02/22 14:36:54 INFO mapred.Merger: Merging 1 sorted segments
23/02/22 14:36:54 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 45 bytes
23/02/22 14:36:54 INFO reduce.MergeManagerImpl: Merged 1 segments, 54 bytes to disk to satisfy reduce memory limit
23/02/22 14:36:54 INFO reduce.MergeManagerImpl: Merging 1 files, 58 bytes from disk
23/02/22 14:36:54 INFO reduce.MergeManagerImpl: Merging 0 segments, 0 bytes from memory into reduce
23/02/22 14:36:54 INFO mapred.Merger: Merging 1 sorted segments
23/02/22 14:36:54 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 45 bytes
23/02/22 14:36:54 INFO mapred.LocalJobRunner: 1 / 1 copied.
23/02/22 14:36:54 INFO Configuration.deprecation: mapred.skip.on is deprecated. Instead, use mapreduce.job.skiprecords
23/02/22 14:36:54 INFO mapred.Task: Task:attempt_local706531480_0001_r_000000_0 is done. And is in the process of committing
23/02/22 14:36:54 INFO mapred.LocalJobRunner: 1 / 1 copied.
23/02/22 14:36:54 INFO mapred.Task: Task attempt_local706531480_0001_r_000000_0 is allowed to commit now
23/02/22 14:36:54 INFO output.FileOutputCommitter: Saved output of task \'attempt_local706531480_0001_r_000000_0\' to file:/root/output/_temporary/0/task_local706531480_0001_r_000000
23/02/22 14:36:54 INFO mapred.LocalJobRunner: reduce > reduce
23/02/22 14:36:54 INFO mapred.Task: Task \'attempt_local706531480_0001_r_000000_0\' done.
23/02/22 14:36:54 INFO mapred.LocalJobRunner: Finishing task: attempt_local706531480_0001_r_000000_0
23/02/22 14:36:54 INFO mapred.LocalJobRunner: reduce task executor complete.
23/02/22 14:36:55 INFO mapreduce.Job: Job job_local706531480_0001 running in uber mode : false
23/02/22 14:36:55 INFO mapreduce.Job:  map 100% reduce 100%
23/02/22 14:36:55 INFO mapreduce.Job: Job job_local706531480_0001 completed successfully
23/02/22 14:36:55 INFO mapreduce.Job: Counters: 30
	File System Counters
		FILE: Number of bytes read=547390
		FILE: Number of bytes written=1095336
		FILE: Number of read operations=0
		FILE: Number of large read operations=0
		FILE: Number of write operations=0
	Map-Reduce Framework
		Map input records=3
		Map output records=6
		Map output bytes=64
		Map output materialized bytes=58
		Input split bytes=90
		Combine input records=6
		Combine output records=4
		Reduce input groups=4
		Reduce shuffle bytes=58
		Reduce input records=4
		Reduce output records=4
		Spilled Records=8
		Shuffled Maps =1
		Failed Shuffles=0
		Merged Map outputs=1
		GC time elapsed (ms)=0
		Total committed heap usage (bytes)=397410304
	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=40
	File Output Format Counters 
		Bytes Written=48

运行结果保存在~/output 目录中,命令执行后查看结果:
[root@master ~]# ll output
total 4
-rw-r--r-- 1 root root 36 Feb 22 14:36 part-r-00000
-rw-r--r-- 1 root root  0 Feb 22 14:36 _SUCCESS

文件_SUCCESS 表示处理成功,处理的结果存放在 part-r-00000 文件中,查 看该文件。
[root@master ~]# cat output/part-r-00000 
hadoop	1
hello	3
shuangmu	1
world	1

注意:输出目录不能事先创建,如果已经有~/output 目录,就要选择另外的 输出目录,或者将~/output 目录先删除。删除命令如下所示。
[hadoop@master ~]$ rm -rf ~/output

以上是关于1的主要内容,如果未能解决你的问题,请参考以下文章

Python迷宫游戏(基础版)

最短路径(迪杰斯特拉算法)

栈实现迷宫

1.1 函数

计算机网络题,码分复用问题

求多项式的和:1/1 - 1/3 + 1/5 - 1/7 + 1/9 . . . + 1/(2*n-1)的和