Centos7环境 – Hadoop单机模式部署

正文开始@Assassin

目录:

  • Centos7环境 -- Hadoop单机模式部署
    • 1. Hadoop介绍:
    • 2. Hadoop发展史及生态圈:
    • 3. Hadoop核心功能及优势:
    • 4. 部署方式介绍:
    • 5. hadoop及jdk下载:
      • 5.1 hadoop安装包下载:
      • 5.2 jdk安装包下载:
    • 6. 安装及环境配置:
      • 6.1 jdk环境配置:
      • 6.2 hadoop环境配置:
    • 7. 测试MapReduce案例:
      • 7.1 测试grep案例:
      • 7.2 测试WordCount案例:
      • 7.3 测试pi案例:

接上一篇博客 点我跳转到虚拟机搭建,配置好虚拟机环境后进行hadoop单机模式的部署,我的云计算课程中只要求了简单的单机模式部署,如果有精力的话,应该会把伪分布式部署也简单地记录一下

1. Hadoop介绍:

Apache Hadoop 项目为可靠,可扩展的分布式计算开发开源软件;Hadoop软件库是一个计算框架,可以使用简单的编程模型以集群的方式对大型数据集进行分布式处理;

Apache Hadoop 软件库是一个框架,它允许使用简单的编程模型跨计算机集群分布式处理大型数据集。它旨在从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。库本身不是依靠硬件来提供高可用性,而是设计用于检测和处理应用层的故障,因此在计算机集群之上提供高可用性服务,每台计算机都可能容易出现故障。

2. Hadoop发展史及生态圈:

时间线 具体事件
2006年2月 成为一套完整而独立的软件,并被命名为Hadoop
2008年1月 Hadoop成为Apache顶级项目
2009年7月 MapReduce和HDFS成为Hadoop的独立子项目
2010年5月 Avro脱离Hadoop项目,成为Apache顶级项目
2010年5月 HBase脱离Hadoop项目,成为Apache顶级项目
2010年9月 Hive脱离Hadoop项目,成为Apache顶级项目
2010年9月 Pig脱离Hadoop项目,成为Apache顶级项目
2011年1月 Hadoop 1.0.0 版本发布
2012年10月 Impala加入Hadoop生态圈
2013年10月 Hadoop 2.0.0 版本发布
2014年2月 Spark成为Apache顶级项目
2017年12月 Hadoop 3.0.0 版本发布
2020年7月 Hadoop 3.3.0 版本发布

3. Hadoop核心功能及优势:

  • Hadoop Common:支持其他 Hadoop 模块的通用实用程序
  • Hadoop 分布式文件系统 (HDFS):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问;是Hadoop生态系统中的核心项目之一,也是分布式计算中数据存储管理的基础
  • Hadoop YARN:作业调度和集群资源管理的框架;可以为上层应用提供统一的资源管理和调度,为集群的资源利用率、统一管理、数据共享等方面提供了便利
  • Hadoop MapReduce:基于 YARN 的系统,用于并行处理大型数据集;Map阶段处理后形成键值对形式的中间结果;Reduce对中间结果相同的 " 键 " 对应的 " 值 " 进行处理,得到最终结果
特点 具体含义
扩容能力 (Scalable) 顾名思义hadoop作为分布式存储和计算的框架平台是在计算机集群内分配数据并行完成计算任务,而集群可以随时扩展到成百上千个节点上
低成本 (Economical) Hadoop通过普通且廉价的机器组成服务器集群来分发以及处理数据,以至于成本很低
高效率 (Efficient) Hadoop可以在节点之间动态并行的移动数据,速度非常之快
可靠性 (Rellable) 能自动维护数据的多份复制,并且可以在任务失败后能自动的重新部署(redeploy)计算任务,所以说Hadoop的按位存储和处理数据的能力值得信赖
高容错性 (High fault tolerance) Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配

4. 部署方式介绍:

  • ① 单机模式(standalone mode):
    单机模式是最简单(默认)的安装模式,因为Hadoop本身是基于Java编写的,所以只要配置好Java的环境变量就可以运行了;在这种部署方式中我们不需要修改任何的配置文件,也不需要启动任何的服务,只需要解压缩、配置环境变量即可。虽然配置很简单,所以说能做的事情也是很少的,因为没有各种守护进程,所以分布式数据存储以及资源调度等等服务都是不能使用的,但是我们可以很方便的测试MapReduce程序

  • ② 伪分布模式(Pseudo-Distributed mode):
    伪分布模式是学习阶段最常用的模式,可以将进程都运行在同一台机器上。在这种模式下,可以模拟全分布模式下的运行状态,基本上可以完成全分布模式下的所有操作,伪分布模式是全分布模式的一个特例

  • ③ 全分布模式(cluster mode):
    在全分布模式下,会在配置文件中体现出主节点与分节点,可以指定哪些机器上运行哪些服务以达到的成本与效率的平衡。在企业中主要采用的都是全分布式模式,节点从数十个到上百个不等。在学习阶段,如果个人PC的性能足够强劲,也可以使用多台虚拟机代替

5. hadoop及jdk下载:

5.1 hadoop安装包下载:

在搜索引擎中直接搜索hadoop即可,注意二级域名是apache.org

进入到 Apache Hadoop 官方下载页面:Apache Hadoop Download

现在基本上使用的是开源社区版,目前的主流版本为2.x.x和3.x.x,这里就选用稳定性较好的 2.10.1 进行下载;页面中有 Source download 和 Binary download 两种,其中Source为源码,Binary为我们所需要的软件包,点击对应版本的Binary进入下载界面:

这里直接放出 2.10.1 Binary 版本的下载链接:hadoop 2.10.1下载链接

hadoop安装包下载完成:

5.2 jdk安装包下载:

在配置Hadoop前,需要先配置好JDK,在安装应先检查之前是否安装过jdk历史版本,如果安装过jdk,需卸载历史版本;接下来需下载jdk,在搜索引擎中搜索jdk:注意二级域名是 apache.com

现在企业中主流的jdk版本是 jdk1.8,所以这里我自然选择 jdk1.8 进行下载,jdk1.8下载链接
进入界面后根据列表的信息选择所需要的版本,32位系统对应x86,64位系统对应x64:这里选择 x64 Compressed Archive

点击右侧的下载链接,然后勾选接受网络许可协议就可以下载了:

这里还得配合oracle的账号来进行下载:

等不及的小伙伴可以通过百度网盘的链接进行下载:
jdk1.8-linux
提取码:1pva

jdk下载完成,一切准备就绪了~~

6. 安装及环境配置:

我的电脑不是很好,开虚拟机内存占用太大了,所以使用 xshell 连接虚拟机,接下来的操作全都在 xshell 中进行:

xshell ssh 远程连接虚拟机成功

6.1 jdk环境配置:

  • ① 查询jdk历史版本:
[ninghai@centos ~]$ rpm -qa | grep jdk
[ninghai@centos ~]$ rpm -qa | grep java


将查询出来的文件删除,如果没有历史版本则进行下一步

  • ② 卸载历史版本(root或者sudo):
[ninghai@centos ~]$ sudo rpm -e --nodeps java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64
[ninghai@centos ~]$ sudo rpm -e --nodeps javapackages-tools-3.4.1-11.el7.noarch
[ninghai@centos ~]$ sudo rpm -e --nodeps python-javapackages-3.4.1-11.el7.noarch
[ninghai@centos ~]$ sudo rpm -e --nodeps tzdata-java-2020a-1.el7.noarch
[ninghai@centos ~]$ sudo rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.262.b10-1.el7.x86_64
[ninghai@centos ~]$ sudo rpm -e --nodeps copy-jdk-configs-3.3-10.el7_5.noarch
[ninghai@centos ~]$ sudo rpm -e --nodeps java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64

卸载完成后执行以下指令,若出现如下结果则说明卸载历史版本成功:

[ninghai@centos ~]$ rpm -qa | grep jdk
[ninghai@centos ~]$ rpm -qa | grep java
[ninghai@centos ~]$ java -version

  • ③ 将文件传输到虚拟机中:

使用lrzsz工具或者xftp进行文件传输
考虑到文件较大,这里改为使用xftp进行文件传输,速率较快:

ls -l 指令查看一下传输完成后的文件列表:

  • ④ 解压缩jdk安装包:
[ninghai@centos ~]$ tar -zvxf jdk-8u251-linux-x64.tar.gz

  • ⑤ 配置环境变量:

注:配置环境变量有两种方式,一种是直接配置系统环境变量,也就是全局环境变量;另一种是配置用户环境变量,也就是本地用户环境变量;系统环境变量在 /etc/profile中进行配置,该配置可作用于全局,无论哪个用户都可以正常使用;用户环境变量在 ~/.bash_profile中进行配置,该配置只可作用于当前用户,其他用户不可正常使用;部署hadoop各模式时要确保jdk环境与hadoop配置环境要作用于同一用户,也就是说java -versionhadoop version需同时在一个用户下起作用,所以说这里我比较推荐jdk配置用系统变量(全局变量),hadoop的配置使用本地用户变量(本地局部变量),这样既不用考虑用户作用域的问题,也隔离了可以使用hadoop的用户,也就是保证hadoop由专有的用户来管理(工作中基本上采用这种模式)

本文中为了跟实验报告保持一致,均采用了配置当前用户 ~/.bash_profile的方法,故也不存在作用域的问题,(jdk和hadoop的配置都在当前用户)
如果在工作中部署hadoop可能会新建hadoop用户来操作,这时候就得考虑作用域是否一致的问题了!!


这里以当前普通用户进行配置 (jdk配置只在当前ninghai用户生效),root 用户使用 vim /etc/profile可以进行全局配置

[ninghai@centos ~]$ vim ~/.bash_profile


在 ~/.bash_profile 文件中追加如下信息:

JAVA_HOME=/home/ninghai/jdk1.8.0_251 #这里填自己jdk的解压路径
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/binexport JAVA_HOME

由于配置的jdk主要是为了让hadoop能够正常调用,所以 CLASSPATH 的部分在此省略~~

使其如下图所示:

最后刷新一下环境变量:

[ninghai@centos ~]$ source ~/.bash_profile

使用如下命令行进行测试:

[ninghai@centos ~]$ java -version

可以发现该命令没有报错,且对应的信息为 java version " 1.8.0_251 ",意味着操作成功:

还是把 root 的相关配置也简单记录一下:vim /etc/profile
系统环境变量中JAVA_HOME的路径一般选择放在 PATH路径中,建议选择 /opt

# 在文件结尾添加以下内容
# 注:JAVA_HOME填的是jdk的安装路径,不一定跟我的一样
JAVA_HOME=/opt/jdk1.8.0_251 #jdk解压目录
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin #拼接原有PATH,同时添加jdk的bin及jre/bin#执行export导出,提升为全局
export JAVA_HOME
export PATH

配置完成后用 root 用户测试 jdk 同样适用,上述两种方法可任选一种进行配置;

6.2 hadoop环境配置:

  • ① 解压缩hadoop安装包:
[ninghai@centos ~]$ tar -zxvf hadoop-2.10.1.tar.gz

  • ② 配置hadoop环境变量:

注:配置环境变量有两种方式,一种是直接配置系统环境变量,也就是全局环境变量;另一种是配置用户环境变量,也就是本地用户环境变量;系统环境变量在 /etc/profile中进行配置,该配置可作用于全局,无论哪个用户都可以正常使用;用户环境变量在 ~/.bash_profile中进行配置,该配置只可作用于当前用户,其他用户不可正常使用;部署hadoop各模式时要确保jdk环境与hadoop配置环境要作用于同一用户,也就是说java -versionhadoop version需同时在一个用户下起作用,所以说这里我比较推荐jdk配置用系统变量(全局变量),hadoop的配置使用本地用户变量(本地局部变量),这样既不用考虑用户作用域的问题,也隔离了可以使用hadoop的用户,也就是保证hadoop由专有的用户来管理(工作中基本上采用这种模式)

本文中为了跟实验报告保持一致,均采用了配置当前用户 ~/.bash_profile的方法,故也不存在作用域的问题,(jdk和hadoop的配置都在当前用户)
如果在工作中部署hadoop可能会新建hadoop用户来操作,这时候就得考虑作用域是否一致的问题了!!


一般来说,工作中部署hadoop时会新建一个hadoop用户来进行操作,这样会显得更规范,这里由于是简单的单机模式就不再新建hadoop用户了;(为了跟我的实验报告保持一致 [doge]

所以依旧是以当前普通用户为例,这里就不再演示 root 用户了,跟jdk的配置大同小异;在此进入 ~/.bash_profile 文件:

在其中添加如下信息:

HADOOP_HOME=/home/ninghai/hadoop-2.10.1
PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbinexport HADOOP_HOME

使其信息如下图所示:

最后刷新一下环境变量:

[ninghai@centos ~]$ source ~/.bash_profile

使用如下命令行进行测试:

[ninghai@centos hadoop-2.10.1]$ hadoop version

可以发现该命令没有报错,且对应的信息为 Hadoop 2.10.1,意味着操作成功:

至此hadoop单机模式部署就算基本完成了,接下来对MapReduce的一些经典案例进行测试~~

7. 测试MapReduce案例:

7.1 测试grep案例:

到这里便可以执行一些例子来感受下 Hadoop 的运行;Hadoop 附带了丰富的例子,包括 wordcount,terasort,join,grep,pi 等;

在此选择运行 grep 例子 (云计算实验报告选择的就是这个 ,将 input 文件夹中的所有文件作为输入,筛选当中符合正则表达式 dfs[a-z.]+ 的单词并统计出现的次数,最后输出结果到 output 文件夹中;

创建 input 文件夹,将 etc/hadoop 目录下的 .xml 文件全部拷贝到 input 文件夹下:

[ninghai@centos hadoop-2.10.1]$ mkdir input
[ninghai@centos hadoop-2.10.1]$ cp etc/hadoop/*xml input

使用 hadoop-mapreduce-examples-2.10.1.jar 来运行 grep:

[ninghai@centos hadoop-2.10.1]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.1.jar grep input output 'dfs[a-z.]+'


ls -l 查看输出的结果:可以看到生成了 output 文件夹,文件夹中包含两个文件,一个标志状态的文件 _SUCCESS,内无任何内容,success表示成功;另一个是输出结果文件 part-r-00000;进入到 output 文件夹中查看 part-r-00000 中的运行结果:

7.2 测试WordCount案例:

切换路径到 /home/ninghai/hadoop-2.10.1/share/hadoop/mapreduce目录下:

[ninghai@centos ~]$ cd /home/ninghai/hadoop-2.10.1/share/hadoop/mapreduce

在 mapreduce 下创建一个测试文件 data.txt:

good better best
never let it rest
till good is better
and better bestgood good study
day day up
today is a good day

使用 hadoop jar 命令来运行一个jar包,在jar包中可能存在多个可执行的类,目前需要运行的是其中的 wordcount;运行时需要两个参数:

  • 输入路径:数据源文件或目录
  • 输出路径:一个还不存在的目录,会自动创建

输入路径就是刚刚创建的data.txt,而输出路径必须是一个不存在路径,每次执行完成后会自动创建该目录,并生成一些结果文件:

[ninghai@centos mapreduce]$ hadoop jar hadoop-mapreduce-examples-2.10.1.jar wordcount data.txt output


ls -l 查看生成的 output 目录:

cd 进入 output 文件夹 ,ls -l :

包含一个标志状态的文件 _SUCCESS,success表示成功,里面没有任何内容;另一个part-r-00000包含统计的结果,各单词出现的次数:


异常解决: 执行上述命令时可能出报错,如果在运行过程中出现UnknownHostException: bogon: 未知的名称或服务 异常,可以通过在 /etc/hosts 文件中添加本机映射解决;如:本机主机名为centos,则修改内容如下(使用root用户或者sudo操作):


7.3 测试pi案例:

切换路径到 /home/ninghai/hadoop-2.10.1/share/hadoop/mapreduce目录下:

[ninghai@centos ~]$ cd /home/ninghai/hadoop-2.10.1/share/hadoop/mapreduce

使用 hadoop-mapreduce-examples-2.10.1.jar 计算圆周率,执行如下命令:

[ninghai@centos mapreduce]$ hadoop jar hadoop-mapreduce-examples-2.10.1.jar pi 10 100000000

其中 pi 后面的10是运行10次map任务,100000000是每个map任务投掷次数,所以总投掷次数是 10 * 100000000 = 1000000000,总投掷次数越多,计算出来的 pi 值越准确

执行结果如下:

测试over~

【云计算平台】Hadoop单机模式环境搭建相关推荐

  1. Spark Standalone单机模式环境搭建

    Spark Standalone单机模式环境搭建 一.实验环境 二.准备工作 三.安装部署 一.实验环境 JDK版本:jdk1.8.0_171 Spark版本:2.1.0,下载地址 Linux操作系统 ...

  2. hadoop 单机单间_初学Hadoop之单机模式环境搭建

    本文仅作为学习笔记,供大家初学Hadoop时学习参考.初学Hadoop,欢迎有经验的朋友进行指导与交流! 1.安装CentOS7 准备 CentOS系统镜像CentOS-7.0-1406-x86_64 ...

  3. hadoop单击模式环境搭建

    一 安装jdk 下载相应版本的jdk安装到相应目录,我的安装目录是/usr/lib/jdk1.8.0_40 下载完成后,在/etc/profile中设置一下环境变量,在文件最后追加如下内容 expor ...

  4. #大数据技术#基于python的hadoop(单机)环境搭建及使用

    基于python的hadoop(单机)环境搭建及使用 0.写在前面 1.虚拟机安装centos6.5 1.1安装流程 1.1.1系统安装 1.1.2修改静态ip(超级用户) 1.1.3更换可用源(超级 ...

  5. Hadoop单机模式和伪分布式搭建教程CentOS

    版权声明:本文为博主原创文章,欢迎转载,请注明地址. 目录(?)[-] 准备工作 1 软件准备 2 创建hadoop用户 3 配置SSH无密码访问 4 安装JAVA环境 单机模式安装 伪分布式安装 首 ...

  6. hadoop单机模式搭建

    1.新建虚拟机 给虚拟机命名,选择存放路径 接着指定磁盘大小,因为我们不止搭建单机模式还要搭建伪分布模式,这里我们选择80G 这里会看到创建虚拟机完成,我们点击自定义硬件,选择合适的内存,处理器,还有 ...

  7. 大数据单机学习环境搭建(5)Hive建表DDL详解

    专题:大数据单机学习环境搭建和使用 1. Hive建表简单示例 1.1.Hive建表语句 1.2.表详细信息 1.3.数据展示 2. Hive建表语法详解 3.拓展1:复杂数据分割 4.拓展2:事务表 ...

  8. Hadoop单机模式安装入门(Ubuntu系统)

    闲来无事,突然看到关于Hadoop集群.以前也了解过,网上找过一些关于百度,谷歌等底层hadoop集群的文档,可是面对很多陌生的技术,看不太通透.所有想自己动手虚拟机试试.经常听到这么高大上的名词,H ...

  9. 大数据单机学习环境搭建(9)Spark单节点安装与pyspark使用

    包含sparksql的完整使用案例,请务必耐心看完 专题:大数据单机学习环境搭建和使用 1.Spark安装 2.Spark配置 2.1配置环境变量 2.2spark客户端 3.Spark使用 3.1环 ...

最新文章

  1. 解决mysqlslap执行命令报错(BEGIN failed--compilation aborted at //bin/mysqlslap line 2098)usr...
  2. ASP.NET中生成缩略图的代码
  3. MySQL 中 delete 语句的子查询限制
  4. 交换机该选择千兆还是百兆的呢?
  5. [MM9]复制格式的快捷操作
  6. android 根据滑动隐藏或显示导航 类似手机QQ好友个人信息
  7. Leetcode二叉树递归:563.binary-tree-tilt(二叉树的坡度)
  8. curl有时获取不到数据 什么原因导致_缓存击穿导致 golang 组件死锁的问题分享...
  9. 小米商城抢购脚本_小米十周年感恩季-816活动攻略
  10. java 读usb口 用POS-58 90U 打印
  11. HBase数据模型和表设计思路
  12. 【无标题】123123123
  13. 使用Amazon SageMaker RL训练离线强化学习策略
  14. MATLAB实现在不同Es/N0情况下,QPSK、16QAM、64QAM误码率结果仿真图(包含软硬判决)
  15. vue 视频 时间进度条组件-使用npm组件
  16. 无线wifi丢包的解决办法
  17. 网线标准以及国内外大牌
  18. Echarts x轴字体倾斜
  19. 树莓派控制Dobot遇到的问题
  20. 国庆六日游——第三天第一题

热门文章

  1. 4699元!三星Galaxy A90 5G国行版开启预售 10月25日正式开售
  2. 传三星Galaxy S10将推出Lite版本 搭载骁龙855处理器
  3. 苹果流媒体电视业务姗姗来迟 Netflix和亚马逊丝毫不虚...
  4. 工信部:不得利用“携号转网”实施恶性竞争行为
  5. 卸任四家锤子公司法定代表人后:罗永浩退出聊天宝股东行列
  6. 《流浪地球》内地票房超《红海行动》北美上映11天成绩不俗
  7. python get,post提交表单
  8. linux 触摸屏在dev的那个目录下,各硬件设备在Linux中的文件名
  9. 介绍一个3d bim模型展示开源项目
  10. python拿什么做可视化界面好_5大Python可视化库到底选哪个好?一篇文章搞定从选库到教学...