目录
3.1 本地模式介绍
3.1.1 特点:
运行在单台机器上,没有分布式思想,使用的是本地文件系统
3.1.2. 用途
用于对MapReduce程序的逻辑进行调试,确保程序的正确。由于在本地模式下测试和调试MapReduce程序较为方便,因此,这种模式适宜用在开发阶段。
3.2 平台软件说明
- 操作系统: win10/win7 - 虚拟软件: VMware14 - 虚拟机: 主机名:qianfeng01 ip:192.168.10.101 - 上传路径: /root - 软件安装路径: /usr/local - Jdk: jdk-8u221-linux-x64.tar.gz - Hadoop: hadoop-2.7.6.tar.gz - 用户: root
3.3 环境搭建:Jdk的安装步骤
步骤1)检查一下是否已经安装过或者系统内置JDK,如果有内置的,将其卸载
[root@qianfeng01 ~]# rpm -qa | grep jdk #如果有,请卸载 [root@qianfeng01 ~]# rpm -e xxxxxxxx --nodeps #将查询到的内置jdk强制卸载
步骤2)上传jdk1.8
将jdk-8u221-linux-x64.tar.gz上传到/root目录中
步骤3)解压jdk到/usr/local/下
[root@qianfeng01 ~]# tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/local
步骤4)更名jdk
[root@qianfeng01 ~]# cd /usr/local [root@qianfeng01 local]# mv jdk1.8.0_221/ jdk
步骤5)配置Jdk的环境变量:/etc/profile
[root@qianfeng01 local]# vi /etc/profile .........省略........... #jdk environment export JAVA_HOME=/usr/local/jdk export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
步骤6)使当前窗口生效
[root@qianfeng01 local]# source /etc/profile
步骤7)验证jdk环境
[root@qianfeng01 local]# java -version [root@qianfeng01 local]# javac
3.4 hadoop目录结构说明
3.4.1 Hadoop目录结构如下:(可以提前在window系统上解压,看一下)
--1. bin: hadoop的二进制执行命令文件存储目录 --2. sbin: hadoop的执行脚本存储目录 --3. etc: hadoop的配置文件存储目录 --4. lib/libexec: hadoop的资源库存储目录 --5. share: hadoop的共享资源、开发工具和案例存储目录 --6. include: hadoop的工具脚本存储目录
3.5 环境搭建:Hadoop的安装步骤
步骤1) 上传并解压hadoop
将hadoop软件包上传到/root目录下,然后解压到/usr/local/目录下 [root@qianfeng01 ~]# tar -zxvf hadoop-2.7.6.tar.gz -C /usr/local/
步骤2)更名hadoop
[root@qianfeng01 ~]# cd /usr/local [root@qianfeng01 local]# mv hadoop-2.7.6/ hadoop
步骤3)配置hadoop的环境变量
[root@qianfeng01 local]# vi /etc/profile .........省略.......... #hadoop environment export HADOOP_HOME=/usr/local/hadoop export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
步骤4)使当前窗口生效
[root@qianfeng01 local]# source /etc/profile
步骤5)验证hadoop
[root@qianfeng01 local]# hadoop version
3.6 程序案例演示:grep程序
步骤1) 进入hadoop的根目录
[root@qianfeng01 local]# cd $HADOOP_HOME
步骤2) 创建一个目录/input
[root@qianfeng01 hadoop]# mkdir input
步骤3) 将$HADOOP_HOME/etc/hadoop/目录下的所有xml文件复制到input目录下
[root@qianfeng01 hadoop]# cp ./etc/hadoop/*.xml ./input
步骤4) 使用hadoop自带的grep程序查找input目录下的文件是否有符合正则表达式'dfs[a-z.]'的字符串
[root@qianfeng01 hadoop]# hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar grep input ./output 'dfs[a-z.]' 命令行内容解析: --1. 使用hadoop命令运行jar文件 --2. 同时指定具体的jar文件的路径 --3. 使用jar文件里的grep主程序 --4. 统计当前目录下的input目录里的内容, --5. 将统计结果输出到当前目录下的output目录 --6. 给grep指定一个正则表达式 注意:输出目录是一个不存在的目录,程序会自动生成
步骤5) 进入output目录查看part-r-00000文件
[root@qianfeng01 hadoop]# cd ./output [root@qianfeng01 output]# cat part-r-00000
3.7 案例测试_wordcount.
[root@qianfeng01 hadoop]# hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar wordcount input ./output1
第四章:安装模式之伪分布式集群
4.1 伪分布式模式介绍
1.特点 - 在一台机器上安装,使用的是分布式思想,即分布式文件系统,非本地文件系统。 - Hdfs涉及到的相关守护进程(namenode,datanode,secondarynamenode)都运行在一台机器上,都是独立的java进程。 2. 用途 比Standalone mode 多了代码调试功能,允许检查内存使用情况,HDFS输入输出,以及其他的守护进程交 互。
4.2 平台软件说明
- 操作系统: win10/win7 - 虚拟软件: VMware14 - 虚拟机: 主机名:qianfeng01 ip:192.168.10.101 - 软件包存储路径: ~ - 软件安装路径: /usr/local/ - Jdk: jdk-8u221-linux-x64.tar.gz - Hadoop: hadoop-2.7.6.tar.gz - 用户: root
4.3 伪分布式环境需求及搭建
4.3.1 环境需求:
--1. 确保防火墙是关闭的. --2. NAT模式和静态IP的确定 (192.168.10.101) --3. 确保/etc/hosts文件里 ip和hostname的映射关系 --4. 确保免密登陆localhost有效 --5. jdk和hadoop的环境变量配置
4.3.2 防火墙关闭确认
[root@qianfeng01 ~]# systemctl stop firewalld [root@qianfeng01 ~]# systemctl disable firewalld.service [root@qianfeng01 ~]# systemctl stop NetworkManager [root@qianfeng01 ~]# systemctl disable NetworkManager #最好也把selinux关闭掉,这是linux系统的一个安全机制,进入文件中将SELINUX设置为disabled [root@qianfeng01 ~]# vi /etc/selinux/config ......... SELINUX=disabled .........
4.3.3 配置/etc/hosts文件
-- 进入hosts文件,配置一下ip和hostname [root@qianfeng01 ~]# vi /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.10.101 qianfeng01 <====添加本机的静态IP和本机的主机名之间的映射关系
4.3.4 确保ssh对localhost的免密登陆认证有效
-1. 使用rsa加密技术,生成公钥和私钥。一路回车即可 [root@qianfeng01 ~]# ssh-keygen -t rsa -2. 进入~/.ssh目录下,使用ssh-copy-id命令 [root@qianfeng01 .ssh]# ssh-copy-id root@localhost -3. 进行验证,去掉第一次的询问(yes/no) [hadoop@qianfeng01 .ssh]# ssh localhost
4.3.5 安装Jdk和Hadoop,配置相关环境变量
-1. 上传和解压两个软件包 [root@qianfeng01 ~]# tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/local/ [root@qianfeng01 ~]# tar -zxvf hadoop-2.7.6.tar.gz -C /usr/local/ -2. 进入local里,给两个软件更名 [root@qianfeng01 ~]# cd /usr/local/ [root@qianfeng01 local]# mv 1.8.0_221/ jdk [root@qianfeng01 local]# mv hadoop-2.7.6/ hadoop -3. 配置环境变量 [hadoop@qianfeng01 local]# vi /etc/profile .....省略........... #java environment export JAVA_HOME=/usr/local/jdk export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH #hadoop environment export HADOOP_HOME=/usr/local/hadoop export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
4.4 伪分布式相关文件的配置
4.4.1 core-site.xml的配置
[root@qianfeng01 ~]# cd $HADOOP_HOME/etc/hadoop [root@qianfeng01 hadoop]# vi core-site.xml <configuration> <!-- 配置分布式文件系统的schema和ip以及port,默认8020--> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:8020/</value> </property> </configuration> 扩展: hadoop1.x的默认端口是9000,hadoop2.x的默认端口是8020,使用哪一个都可以
4.4.2 hdfs-site.xml的配置:
[root@qianfeng01 hadoop]# vi hdfs-site.xml <configuration> <!-- 配置副本数,注意,伪分布模式只能是1。--> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
4.4.3 hadoop-env.sh的配置:指定jdk的环境
[root@qianfeng01 hadoop]# vi hadoop-env.sh ................ # The java implementation to use. export JAVA_HOME=/usr/local/jdk ..................
4.5 格式化NameNode
4.5.1 格式化命令
[root@qianfeng01 hadoop]# hdfs namenode -format
4.5.2 格式化的日志解读
4.6 启动HDFS
4.6.1 启动伪分布式
[root@qianfeng01 hadoop]# start-dfs.sh
4.6.2 启动滚动信息说明
4.6.3 jps命令查看守护进程
从上图我们可以看到,启动脚本会开启分布式文件系统上的相关进程:
namenode datanode secondarynamenode
4.7 WebUI_50070
可以在浏览器上输入:192.168.10.101:50070 来查看一下伪分布式集群的信息 --1. 浏览一下页面上提示的ClusterID,BlockPoolID --2. 查看一下活跃节点(Live Nodes)的个数,应该是1个 Compiled:编译 hadoop是由kshvachk工具集成的 Cluster ID:集群id Block Pool ID:datanode节点的block池的id,每个datanode节点的都要一样
4.8 程序案例演示:wordcount程序
4.8.1 准备要统计的两个文件,存储到/root/data/下
--1. 创建data目录 [root@qianfeng01 hadoop]# mkdir ~/data --2. 将以下两个文件上传到data目录下 - poetry1.txt - poetry2.txt
4.8.2 在hdfs上创建存储目录
[root@qianfeng01 hadoop]# hdfs dfs -mkdir /input
4.8.3 将本地文件系统上的上传到hdfs上,并在web上查看一下
[root@qianfeng01 hadoop]$ hdfs dfs -put ~/data/poetry* /input/
4.8.4 运行自带的单词统计程序wordcount
[root@qianfeng01 hadoop]# cd $HADOOP_HOME [root@qianfeng01 hadoop]# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar wordcount /input /out
4.8.5 查看webui
4.8.6 查看part-r-00000文件
[root@qianfeng01 hadoop]# hdfs dfs -cat /out/part-r-00000