Hadoop大数据平台实战 —— Hadoop单机操作和伪分布式操作

Hadoop下载与安装

由于 Hadoop 底层是用 Java 编写,因此还需要安装 JDK
下载 Hadoop 和 JDK 的源码包
在这里插入图片描述
新建普通用户,将源码包移动到普通用户下,并切换到普通用户

useradd dsd
mv jdk-8u181-linux-x64.tar.gz hadoop-3.2.1.tar.gz /home/dsd/
su - dsd

在这里插入图片描述
解压 JDK 源码包并做软链接

tar zxf jdk-8u181-linux-x64.tar.gz
ln -s jdk1.8.0_181/ jdk   # 做软链接有利于后期更新,只需要将链接的指向修改即可

在这里插入图片描述
解压 Hadoop 源码包并做软链接

tar zxf hadoop-3.2.1.tar.gz
ln -s hadoop-3.2.1 hadoop

在这里插入图片描述
修改 hadoop 环境(将 JDK 的路径告知 hadoop )

vim /home/dsd/hadoop/etc/hadoop/hadoop-env.sh
###
export JAVA_HOME=/home/dsd/jdk
export HADOOP_HOME=/home/dsd/hadoop
###

在这里插入图片描述
启动 hadoop,加到环境变量中方便执行

vim .bash_profile
source .bash_profile #使其生效
hadoop # 运行

在这里插入图片描述
Hadoop大数据平台实战 —— Hadoop单机操作和伪分布式操作_第1张图片

Standalone Operation(单机操作)

默认情况下,Hadoop 被配置为以非分布式模式作为单个 Java 进程运行

复制解压缩的conf目录以用作输入,然后查找并显示给定正则表达式的每个匹配项。输出被写入给定的输出目录

> mkdir input
> cp etc/hadoop/*.xml input
> hadoop jar hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input 	output 'dfs[a-z.]+'
> 使用 grep 方法,从 input 中取出数据,输出的数据到 output 目录$\color{#FF0000}{(output运行前不能存在)}$  'dfs[a-z.]+'  为过滤的关键字
> cat output/*

在这里插入图片描述
在这里插入图片描述

Pseudo-Distributed Operation(伪分布式操作)

Hadoop 也可以以伪分布式模式在单节点上运行,其中每个 Hadoop 守护程序都在单独的 Java 进程中运行

HDFS

设置组态

vim hadoop/etc/hadoop/core-site.xml # 设定hdfs
vim hadoop/etc/hadoop/hdfs-site.xml # 设置hadoop副本数,默认是3,但此时我们使用的是单台主机,因此设置为1即可,后续可根据需求更改

在这里插入图片描述
在这里插入图片描述
在 hadoop 中 works 相当于从机,查看 works 内容,为 localhost 。即此刻 master 和 slave 在一个主机上。
在这里插入图片描述
设置 ssh 免密

> ssh-keygen # 生成密钥

> cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 将公钥补充到 authorized_keys 中
> chmod 0600〜/ .ssh / authorized_keys # 修改权限

上面两条指令的结果等同于::
> ssh-copy-id localhost # 在同台主机可以使用上述方式来完成,而在跨主机时需要使用该命令来完成

Hadoop大数据平台实战 —— Hadoop单机操作和伪分布式操作_第2张图片
在这里插入图片描述
ssh 可以直接连接,不需要再输入密码,免密操作成功

执行

  1. 格式化文件系统
> hdfs namenode -format # namenode 类似于 master 节点,datanode 类似于 slave 节点

Hadoop大数据平台实战 —— Hadoop单机操作和伪分布式操作_第3张图片

  1. 启动NameNode守护程序和DataNode守护程序
将 sbin 添加到系统环境变量中,方便直接运行里面的脚本
vim .bash_profile
###
:$HOME/hadoop/sbin/:$HOME/jdk/bin/
###
source .bash_profile # 使环境变量修改生效
start-dfs.sh # 启动程序

hadoop 守护程序日志输出到了 H A D O O P L O G D I R d i r e c t o r y 目 录 下 , 默 认 在 HADOOP_LOG_DIR directory目录下,默认在 HADOOPLOGDIRdirectoryHADOOP_HOME/logs
在这里插入图片描述
在这里插入图片描述

  1. 浏览Web界面的NameNode,默认在9870端口
    Hadoop大数据平台实战 —— Hadoop单机操作和伪分布式操作_第4张图片

我 犯 了 一 个 很 傻 的 错 , 没 有 关 闭 防 火 墙 , 导 致 无 法 在 w e b 端 访 问 。 在 这 里 打 上 标 签 , 提 醒 自 己 以 后 一 定 要 细 心 \color{#FF0000}{我犯了一个很傻的错,没有关闭防火墙,导致无法在web端访问。在这里打上标签,提醒自己以后一定要细心} web访

  1. 设置执行 MapReduce 作业所需的 HDFS 目录
hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/dsd
  1. 将输入文件复制到分布式文件系统中
hdfs dfs -put input

Hadoop大数据平台实战 —— Hadoop单机操作和伪分布式操作_第5张图片

  1. 运行
先删除本地的input 和 output ,来比较和单机操作的速度区别
rm -fr input output
hadoop jar hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.]+'

就单论运行速度而言,会比单机操作慢一些,当然由于我们数据量小,不是很明显。但是可以想象到,当数据量达到一定值时,这个时差还是很可观的
Hadoop大数据平台实战 —— Hadoop单机操作和伪分布式操作_第6张图片

  1. 检查输出文件:将输出文件从分布式文件系统复制到本地文件系统并检查它们
hdfs dfs -get output output
cat output/*

在这里插入图片描述
查看分布式文件系统上的输出文件
在这里插入图片描述
8. 关闭守护程序

stop-dfs.sh

在这里插入图片描述

YARN

在单个节点上的YARN
通过设置一些参数并另外运行 ResourceManager 守护程序和 NodeManager 守护程序,以伪分布式模式在YARN上运行 MapReduce 作业
上述 1~4 操作做过后再执行下面的操作:

  1. 修改配置参数
vim hadoop/etc/hadoop/mapred-site.xml
###
 
     
         mapreduce.framework.name  
         yarn  
     
     
         mapreduce.application.classpath  
         $ HADOOP_MAPRED_HOME / share / hadoop / mapreduce / *:$ HADOOP_MAPRED_HOME / share / hadoop / mapreduce / lib / *  
     

###
vim hadoop/etc/hadoop/yarn-site.xml
###
 
     
         yarn.nodemanager.aux-services  
         mapreduce_shuffle  
     
     
         yarn.nodemanager.env-whitelist  
        <值> JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME  
     

###
  1. 启动ResourceManager守护程序和NodeManager守护程序
start-yarn.sh
  1. 浏览Web界面以查找ResourceManager;默认情况下,它在以下位置可用
http://localhost:8088/
  1. 运行MapReduce
  2. 完成后,使用以下命令停止守护进程
stop-yarn.sh

你可能感兴趣的:(运维企业实战)