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的主要内容,如果未能解决你的问题,请参考以下文章