内容整理于笔记

集群规划:
☛Hadoop的高可用完全分布模式中有HDFS的主节点和数据节点、MapReduce的主节点和任务节点、数据同步通信节点、主节点切换控制节点总共6类服务节点, 其中 HDFS的主节点、MapReduce的主节点、主节点切换控制节点共用相同主机cgt-01和cgt-02,HDFS的数据节点、MapReduce的任务节点共用相同主机cgt-03、cgt-04、cgt-05, 数据同步通信节点可以使用集群中的任意主机, 但因为其存放的是元数据备份,所以一般不与主节点使用相同主机。

☛高可用完全分布模式中需要满足主节点有备用的基本要求,所以需要两台或以上的主机作为主节点, 而完全分布模式中需要满足数据有备份和数据处理能够分布并行的基本要求,所以需要两台或以上的主机作为HDFS的数据节点和MapReduce的任务节点,同时数据同步通信节点工作原理同Zookeeper类似,需要三台或以上的奇数台主机,具体规划如下。

主机名 IP地址 服务名称

cgt-01 192.168.10.111 Hadoop主节点
 Hadoop主节点切换服务
 Yarn主节点
 cgt-02 192.168.10.112 Hadoop主节点
 Hadoop主节点切换服务
 Yarn主节点
 cgt-03 192.168.10.113 Hadoop数据服务
 Hadoop同步通信服务
 Yarn节点管理服务
 cgt-04 192.168.10.114 Hadoop数据服务
 Hadoop同步通信服务
 Yarn节点管理服务
 cgt-05 192.168.10.115 Hadoop数据服务
 Hadoop同步通信服务
 Yarn节点管理服务

Hadoop常见shell
命令:

-ls: 查看指定路径的当前目录结构
 -ls -R: 递归查看指定路径的目录结构
 -du: 统计目录下文件(夹)的大小
 -mkdir: 创建空白文件夹(-P递归创建文件夹)
 -rm: 删除文件/空白文件夹
 -rmr: 递归删除
 -touchz:创建空白文件
 -cat: 查看文件内容
 -text: 将源文件输出为文本格式
 -get: 将Hadoop上某个文件下载到本地已有目录下
 -mV: 将Hadoop上某个文件移动
 -kill: 将正在运行的hadoop作业kill掉
 -du -h: 显示目录下各个文件大小
 -du -S: 汇总目录下文件大小
 -du -S -h:汇总文件所占存储空间

实验内容与完成情况:
HDFS中常见Shell命令
(1)向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,由用户指定是追加到原有文件末尾还是覆盖原有的文件;

(2)从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件重命名;
例如:从HDFS下载file1.txt到本地目录:和本地重名自动重命名$ hadoop fs -get /user/admin/file1.txt /home/admin/

(3)将HDFS中指定文件的内容输出到终端中
例如:查看打印HDFS中指定文件file1.txt的内容$ hadoop fs -cat /user/admin/file1.xt$ hadoop fs -text /user/admin/file1.txt

(4)显示HDFS中指定的文件的读写权限、大小、创建时间、路径等信息;
例如:查看HDFS中file1.txt的读写权限、 文件大小、创建时间、路径等。

$ hadoop fs -du /user/admin/file1.txt
 $ hadoop fs -dus /user/admin/file1.txt
 $ hadoop fs -du -h /user/admin/file1.txt

(5)给定HDFS中某一一个目录,输出该目录下的所有文件的读写权限、大小、创建时间、路径等信息,如果该文件是目录,则递归输出该目录下所有文件相关信息:
例如:新建目录dir1, /dir1/dir2, 新建并,上传文件file2.txt到dir1, file2.xt内 容为hello world!,新建并上传文件file3.txt到dir2,file3.xt的内 容为hello hadoop!,然后查看dir1目录下的所有文件读写权限、大小等;递归输出dir2目录下所有文件相关信息。

$ hadoop fs -mkdir dir1
 $ hadoop fs -mkdir -p dir1$hadoop fs -mkdir -p /user/admin/dir1/dir2
 $ echo ‘hello world!’ > /home/admin/file2.txt
 $ hadoop fs -put /home/admin/file2.txt /user/admin/dir1/
 $ hadoop fs -cat /user/admin/dir1/file2.txtS
 $ hadoop fs -du -h /user/admin/dir1/$ echo ‘hello hadoop!’ > /home/admin/file3.xt
 $ hadoop fs -put /home/admin/file3.txt /user/admin/dir1/dir2/
 $ hadoop fs -ls /user/admin/dir1
 $ hadoop fs -ls -R /user/admin/dir1

(6)提供一个HDFS内的文件的路径,对该文件进行创建和删除操作。如果文件所在目录不存在,则自动创建目录:

例如: HDFS内的文件file4.txt,指定路径为dir1/dir3
$ hadoop fs -touchz /user/admin/dir1/dir3/file4.txt

(7)提供一个HDFS的目录的路径,对该目录进行创建和删除操作。创建目录时, 如果目录文件所在目录不存在则自动创建相应目录;删除目录时,由用户指定当该目录不为空时是否还删除该目录:

例如: HDFS内的目录dir4,指定路径为/dir1/,在HDFS中/dir1/dir4目 录下新建文件file5.txt

$ hadoop fs -mkdir -p /user/admin/dir1/dir4
 $ hadoop fs -touchz /user/admin/dir1/dir4/ile5.txt
 $ hadoop fs -rm /user/admin/dir1/dir4
 $ hadoop fs -rm -r /user/admin/dir1/dir4

(8)向HDFS中指定法人文件追加内容,由用户指定内容追加到原有文件的开头或结尾:、
先查看file3.txt的内容:

使用命令$hadooop fs -appendTofile ~/Test/file1.txt /user/admin/dir1/dir2/file3.txt将本地文件file1.txt的内容追加到HDFS中file3.txt的文末。

二、MapReduce - WordCount程序练习
要求:①下载一个WordCount的程序包并上传
②运行示例
说明:单词计数是最简单也是最能体现MapReduce思想的程序之一,可称为MapReduce版的“Hello world”。
单词计数主要完成功能是:统计一系列文本文件中的每个单词出现的次数。
现在以“admin”普通用户登录“Master.Hadoop”服务器。即在主节点操作。
创建本地实例文件
首先在“/home/admin”的目录下创建文件夹“file”.
接着创建连个本地文件file1.txt和file2.txt.
使file1.txt内容为“Hello Word”,而file2.txt的文件内容是“Hello hadoop”。

$ cd file
 $ echo “Hello word”> file1.txt
 $ echo “Hello hadoop”> file2.txt

在HDFS创建输入文件夹
$ hadoop fs -mkdir input
上传本地file中文件到集群的input目录下
$ hadoop fs -put ~/file/file*.txt input
$ hadoop fs -ls input

上传jar包
使用Xftp工具把WordCount的jar执行程序包,上传到~/hadoop/hadoop=2.7.3/share/hadoop/mapreduce目录下

在集群上运行WordCount程序
备注:以input为输入目录,output为输出目录
$ hadoop jar ~/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-0.20.2-examples.jar wordcount input output

查看结果
查看HDFS上output目录内容

Hadoop的web验证练习
HDFS启动验证
1、查看jps进程状态:

2、打开浏览器查看

http://192.168.10.111:50070/
http://192.168.10.111:50070/dfshealth.html# tab-overview

ResourceManager状态查看:

1、打开浏览器查看集群状态、日志信息等:

http://192.168.10.111:8088/
http://192.168.10.111:8088/cluster

在从节点上查看NodeManager信息:

http://192.168.10.113:8042/