大数据实验2.Hadoop 集群搭建(单机/伪分布式/分布式)

实验 Hadoop安装和使用

一、实验目的

  1. 实现hadoop的环境搭建和安装
  2. Hadoop的简单使用;

二、实验平台

  1. 操作系统:Linux(建议Ubuntu16.04或者18.04);
  2. Hadoop版本:3.1.3;
  3. JDK版本:1.8。

安装参考教程:https://dblab.xmu.edu.cn/blog/2441/

三、实验步骤

(一)新建一个用户,用户名自定义,并给新建的用户添加管理员权限,后面的操作均在新建用户下操作

(二)安装准备
(1)SSH服务端安装和免密登录设置

1.1安装SSH服务端

1.2免密登录设置

(2)安装Java环境,在安装目录下,并验证安装是否成功;

(3)切换到任意的非jdk安装目录,使用刚刚的命令,验证java是否可用;

(4)根据jdk安装目录设置JAVA_HOME和PATH环境变量,设置后使其立即生效,然后通过echo命令查看JAVA_HOME和PATH变量的设置是否成功;

(5)切换到任意非jdk安装目录,执行”java –version”命令,对比(2)中的命令,对结果进行对比分析,并解释设置环境变量的意义;

(6)对比分析:

    对比: 比较在设置环境变量前后,java -version命令的执行结果。

    分析: 如果在设置环境变量之前命令失败,而在设置之后成功,这证明了环境变量设置的必要性和有效性。环境变量的设置简化了Java应用程序的运行和开发,因为它们允许Java命令在任何工作目录下被识别和执行。

(7)设置环境变量的意义:

1)、简化命令行操作:通过设置环境变量,用户可以在任何目录下直接运行Java命令,而不需要每次都输入完整的路径。这大大简化了命令行操作,提高了效率。

2)、系统级别的配置:环境变量可以被系统级别的应用程序和服务所使用。例如,某些应用程序可能需要知道Java的安装位置,通过读取JAVA_HOME环境变量,它们可以找到并使用正确的Java版本。

3)、跨平台兼容性:环境变量提供了一种跨平台的配置方式。不同的操作系统可能有不同的路径和配置方式,但通过统一的环境变量,可以在不同的平台上实现相同的配置效果。

4)、版本管理:在多版本Java共存的环境中,通过设置JAVA_HOME环境变量,可以指定特定版本的Java用于编译和运行应用程序。这在需要同时支持多个Java版本的情况下非常有用。

5)、自动化脚本和工具:许多自动化脚本和开发工具依赖于环境变量来确定如何执行任务。例如,构建工具(如Maven或Gradle)会使用JAVA_HOME来确定使用哪个Java版本来编译代码。

6)、安全性:通过控制环境变量,系统管理员可以限制用户对特定资源的访问,或者确保应用程序使用正确的库和资源。

7)、易于维护和更新:如果需要更新Java版本或更改配置,只需更新环境变量的值,而不需要修改每个脚本或应用程序的配置。这样可以减少维护工作量,并确保所有依赖于这些变量的工具和应用程序都能正确地使用新的配置。

总之,设置环境变量是一种有效的配置管理方式,它使得系统配置更加灵活、可维护,并且能够提高开发和运维的效率。

(三)单机安装hadoop
(1)安装hadoop

(2)通过查看安装的hadoop版本信息,验证是否安装成功

(三)伪分布式安装hadoop和配置
(1)配置相关的文件;

(2)初始化分布式文件系统;

(3)使用start-dfs.sh,查看启动的java进程,验证启动是否成功;

(4)终止hadoop运行,使用start-all.sh启动,查看启动的java进程,并和(3)中的结果进行比较分析;

1)、比较分析:

A、使用start-dfs.sh时,只有与HDFS相关的守护进程(NameNode和DataNode)会启动。

 B、使用start-all.sh时,除了HDFS的守护进程,还会启动YARN的ResourceManager和NodeManager,以及MapReduce的JobTracker和TaskTracker(在Hadoop 1.x中)或ResourceManager(在Hadoop 2.x中)。

(5)在Web端查看Hadoop运行情况以及文件系统中的文件目录;

(6)在hadoop存储系统中创建 /temp/dirName,文件夹名字自定义并查看创建是否成功
(7)切换到hadoop中的测试样例文件所在路径,并任选一个样例进行测试;
(8)终止Hadoop的运行,并验证进程结束;

四、总结(问题与收获)

1、遇到的问题:

    SSH服务端安装和免密登录设置:在配置SSH服务端时,我遇到了权限问题,导致无法成功生成SSH密钥。通过查阅文档和咨询同学,我了解到需要使用sudo命令来获取必要的权限。

    Java环境变量配置:在设置JAVA_HOME和PATH环境变量时,我最初没有将它们添加到系统的环境变量中,导致在非JDK安装目录下无法识别Java命令。通过编辑.bashrc文件并重新加载配置,我成功解决了这个问题。

    Hadoop伪分布式配置:在配置Hadoop的伪分布式环境时,我遇到了NameNode和DataNode无法同时启动的问题。经过检查配置文件和日志,我发现是hdfs-site.xml中的配置有误,修正后问题得以解决。

2、收获:

    Linux系统管理技能:通过本次实验,我加深了对Linux系统管理的理解,包括用户管理、服务安装和权限配置等。

    Java环境配置经验:我学会了如何在Linux环境下安装和配置Java环境,以及如何通过环境变量来管理Java版本。

    Hadoop安装与配置:我掌握了Hadoop的单机和伪分布式安装方法,了解了Hadoop各组件的作用和配置要点。

    问题解决能力:在遇到问题时,我学会了如何通过查阅文档、搜索解决方案和与同伴讨论来独立解决问题。

    大数据处理理解:通过本次实验,我对Hadoop和大数据处理有了更深入的认识,为后续的学习和研究打下了基础。

总的来说,通过本次实验,我不仅学习到了Hadoop的安装和使用,还提升了自己的问题解决能力和技术理解。我相信这些技能和经验将对我的未来学习和工作大有裨益。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/881798.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安全热点问题

安全热点问题 1.DDOS2.补丁管理3.堡垒机管理4.加密机管理 1.DDOS 分布式拒绝服务攻击,是指黑客通过控制由多个肉鸡或服务器组成的僵尸网络,向目标发送大量看似合法的请求,从而占用大量网络资源使网络瘫痪,阻止用户对网络资源的正…

【靶点Talk】免疫检查点争夺战:TIGIT能否超越PD-1?

曾经的TIGIT靶点顶着“下一个PD-1”的名号横空出世,三年的“征程”中TIGIT走过一次又一次的失败,然而面对质疑和压力仍有一批公司选择前行。今天给大家分享TIGIT靶点的相关内容,更多靶点科普视频请关注义翘神州B站和知乎官方账号。 TIGIT的“…

2024年最新 Python 大数据网络爬虫技术基础案例详细教程(更新中)

网络爬虫概述 网络爬虫(Web Crawler),又称为网页蜘蛛(Web Spider)或网络机器人(Web Robot),是一种自动化程序或脚本,用于浏览万维网(World Wide Web&#xf…

串口助手的qt实现思路

要求实现如下功能&#xff1a; 获取串口号&#xff1a; foreach (const QSerialPortInfo &serialPortInfo, QSerialPortInfo::availablePorts()) {qDebug() << "Port: " << serialPortInfo.portName(); // e.g. "COM1"qDebug() <<…

2024年中国研究生数学建模竞赛C题——解题思路

2024年中国研究生数学建模竞赛C题——解题思路 数据驱动下磁性元件的磁芯损耗建模——解决思路 二、问题描述 为解决磁性元件磁芯材料损耗精确计算问题&#xff0c;通过实测磁性元件在给定工况&#xff08;不同温度、频率、磁通密度&#xff09;下磁芯材料损耗的数据&#xf…

【HTTPS】中间人攻击和证书的验证

中间人攻击 服务器可以创建出一堆公钥和私钥&#xff0c;黑客也可以按照同样的方式&#xff0c;创建一对公钥和私钥&#xff0c;冒充自己是服务器&#xff08;搅屎棍&#xff09; 黑客自己也能生成一对公钥和私钥。生成公钥和私钥的算法是开放的&#xff0c;服务器能生产&…

「iOS」——单例模式

iOS学习 前言单例模式的概念单例模式的优缺点单例模式的两种模式懒汉模式饿汉模式单例模式的写法 总结 前言 在一开始学习OC的时候&#xff0c;我们初步接触过单例模式。在学习定时器与视图移动的控件中&#xff0c;我们初步意识到单例模式的重要性。对于我们需要保持的控件&a…

java基础知识20 Intern方法的作用

一 Intern方法作用 1.1 Intern方法 1.在jdk1.6中&#xff1a; intern()方法&#xff1a;在jdk1.6中&#xff0c;根据字符串对象&#xff0c;检查常量池中是否存在相同字符串对象 如果字符串常量池里面已经包含了等于字符串X的字符串&#xff0c;那么就返回常量池中这个字符…

windows安装docker 本地打包代码

参考文章1&#xff1a;https://gitcode.csdn.net/65ea814b1a836825ed792f4a.html 参考文章2&#xff1a; Windows 安装docker&#xff08;详细图解&#xff09;-CSDN博客 一 下载 Docker Desktop 在官网上下载 Docker Desktop&#xff0c;可以从以下链接下载最新版本&#x…

【大模型实战篇】关于Bert的一些实操回顾以及clip-as-service的介绍

最近在整理之前的一些实践工作&#xff0c;一方面是为了笔记记录&#xff0c;另一方面也是自己做一些温故知新&#xff0c;或许对于理解一些现在大模型工作也有助益。 1. 基于bert模型实现中文语句的embedding编码 首先是基于bert模型实现中文语句的embedding编码&#xff0c;…

鸿蒙【项目打包】- .hap 和 .app;(测试如何安装发的hap包)(应用上架流程)

#打包成.hap需要用到真机 原因是&#xff1a;只有用上了真机才能在项目中配置 自动签名 #步骤: ##第一步:选择真机->选择项目结构->点Sigining Configs(签名配置) ##第二步:勾选Automatically generate signature(自动签名)->点击ok ##第三步:点击构建->点击 …

接口幂等性和并发安全的区别?

目录标题 幂等性并发安全总结 接口幂等性和并发安全是两个不同的概念&#xff0c;虽然它们在设计API时都很重要&#xff0c;但侧重点不同。 幂等性 定义&#xff1a;幂等性指的是无论对接口进行多少次相同的操作&#xff0c;结果都是一致的。例如&#xff0c;HTTP的PUT和DELE…

QT快速安装使用指南

在Ubuntu 16.04上安装Qt可以通过多种方式进行。以下是使用Qt在线安装程序和apt包管理器的两种常见方法&#xff1a; 方法一&#xff1a;使用Qt在线安装程序 下载Qt在线安装程序 访问Qt官方网站&#xff1a;Try Qt | Develop Applications and Embedded Systems | Qt找到并下载…

Hadoop的安装

文章目录 一. 到Hadoop官网下载安装文件hadoop-3.4.0.tar.gz。二. 环境变量三. 配置 一. 到Hadoop官网下载安装文件hadoop-3.4.0.tar.gz。 随后点击下载即可 由于Hadoop不直接支持Windows系统&#xff0c;因此&#xff0c;需要修改一些配置才能运行 二. 环境变量 三. 配置 进…

arcgisPro地理配准

1、添加图像 2、在【影像】选项卡中&#xff0c;点击【地理配准】 3、 点击添加控制点 4、选择影像左上角格点&#xff0c;然后右击填入目标点的投影坐标 5、依次输入四个格角点的坐标 6、点击【变换】按钮&#xff0c;选择【一阶多项式&#xff08;仿射&#xff09;】变换 7…

VisualPromptGFSS

COCO-20 i ^i i太大&#xff0c;不建议复现

大学生必看!60万人在用的GPT4o大学数学智能体有多牛

❤️作者主页&#xff1a;小虚竹 ❤️作者简介&#xff1a;大家好,我是小虚竹。2022年度博客之星&#x1f3c6;&#xff0c;Java领域优质创作者&#x1f3c6;&#xff0c;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;掘金年度人气作者&#x1…

14年数据结构

第一题 解析&#xff1a; 求时间复杂度就是看程序执行了多少次。 假设最外层执行了k次&#xff0c;我们看终止条件是kn&#xff0c;则&#xff1a; 有, 内层是一个j1到jn的循环&#xff0c;显然执行了n次。 总的时间复杂度是内层外层 答案选C。 第二题 解析&#xff1a; 一步一…

基于协同过滤+python+django+vue的音乐推荐系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于协同过滤pythondjangovue…

【前端】ES6:Class语法和Class继承

文章目录 1 Class语法1.1 类的写法1.2 getter与setter1.3 静态属性和静态方法 2 Class继承 1 Class语法 1.1 类的写法 class Person {constructor(name,age){this.name name;this.age age;}say(){console.log(this.name,this.age)} } let obj new Person("kerwin&quo…