Ubuntu搭建Hadoop环境

news/2024/5/5 2:09:45/文章来源:https://blog.csdn.net/duke_ding2/article/details/128128435

本文是在一个全新的Ubuntu 22.04 虚拟机上安装Hadoop 3.3.4。

环境

  • Ubuntu 22.04
  • JDK 11
  • Hadoop 3.3.4

安装Hadoop

首先安装JDK:

# apt install openjdk-11-jdk-headless

安装好以后查看:

# java -version
openjdk version "11.0.17" 2022-10-18
OpenJDK Runtime Environment (build 11.0.17+8-post-Ubuntu-1ubuntu222.04)
OpenJDK 64-Bit Server VM (build 11.0.17+8-post-Ubuntu-1ubuntu222.04, mixed mode, sharing)

注意:Hadoop 3.3.4貌似不支持JDK 17,会报一个类似 java.lang.IllegalStateException: Unable to load cache item 的错误,换成JDK 11就好了。参见 https://blog.csdn.net/duke_ding2/article/details/123932532

然后要求在localhost上ssh免密登录,效果如下:

# ssh localhost
Ubuntu 22.04.1 LTS
Last login: Wed Nov 30 18:29:00 2022 from 9.200.47.148

如果需要配置ssh免密登录,只需在客户端机器生成一对public/private key,把public key复制到服务器端机器(本例就是本机)的 ~/.ssh/authorized_keys 里面即可,具体做法不再赘述,可以网上搜一下。

访问 https://hadoop.apache.org/ ,下载Hadoop的压缩文件。我下载的文件是 hadoop-3.3.4.tar.gz

# wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz

解压缩:

# tar -zxvf hadoop-3.3.4.tar.gz

编辑 etc/hadoop/hadoop-env.sh 文件,添加:

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

注:我是用 which javall 命令来查看java所在目录的。

验证Hadoop

有3种模式:

  • Local (Standalone) Mode
  • Pseudo-Distributed Mode
  • Fully-Distributed Mode

Local (Standalone) Mode

Hadoop的默认配置就支持非分布式模式。所以现在就可以试一下。比如,复制一些文件到 input 目录,然后统计里面的一些特定文本信息。

# mkdir input
# cp etc/hadoop/*.xml input
# bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar grep input output 'dfs[a-z.]+'
# cat output/*
1	dfsadmin

查看 output 目录:

# ll output/
total 16
drwxr-xr-x  2 root root   88 Nov 30 18:39 ./
drwxr-xr-x 13 1024 1024 4096 Nov 30 18:42 ../
-rw-r--r--  1 root root    8 Nov 30 18:39 ._SUCCESS.crc
-rw-r--r--  1 root root   12 Nov 30 18:39 .part-r-00000.crc
-rw-r--r--  1 root root    0 Nov 30 18:39 _SUCCESS
-rw-r--r--  1 root root   11 Nov 30 18:39 part-r-00000
# cat output/part-r-00000
1	dfsadmin

Pseudo-Distributed Mode

修改 etc/hadoop/core-site.xml 文件,添加如下配置:

<configuration><property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property>
</configuration>

修改 etc/hadoop/hdfs-site.xml 文件,添加如下配置:

<configuration><property><name>dfs.replication</name><value>1</value></property>
</configuration>

注意确认一下 ssh localhost 可以免密登录。

格式化HDFS:

# bin/hdfs namenode -format

启动HDFS,报错如下:

# sbin/start-dfs.sh
Starting namenodes on [localhost]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [schlepps1.fyre.ibm.com]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.

在网上搜了一下,解决方法是,在 etc/hadoop/hadoop-env.sh 里添加以下几行内容:

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

参考: https://stackoverflow.com/questions/48129029/hdfs-namenode-user-hdfs-datanode-user-hdfs-secondarynamenode-user-not-defined

现在,就可以用 sbin/start-dfs.sh 命令启动HDFS了。

同理,也可以用 sbin/stop-dfs.sh 命令停止HDFS。

启动HDFS后,可以通过浏览器访问 http://<IP>:9870/

在这里插入图片描述

在HDFS里初始化root的根目录:

# bin/hdfs dfs -mkdir /user
# bin/hdfs dfs -mkdir /user/root

此时,目录是空的:

# bin/hdfs dfs -ls

我们来创建一个 input 目录:

# bin/hdfs dfs -mkdir input

再来查看一下:

# bin/hdfs dfs -ls
Found 1 items
drwxr-xr-x   - root supergroup          0 2022-11-30 19:51 input

接下来,复制一些文件到HDFS。例如, input2 是一个本地目录,里面有 aaa.txtbbb.txt 两个文本文件。把这两个文件复制到HDFS:

# bin/hdfs dfs -put /root/Downloads/hadoop-3.3.4/input2/* input

查看文件内容:

# bin/hdfs dfs -cat input/aaa.txt
abcdef
hi
haha
hello
world
hhii
# bin/hdfs dfs -cat input/bbb.txt
hhh
hihihi
aaabbb
cccddd
high
12345

统计 hi 出现的次数:

# bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar grep input output 'hi'

运行完之后,会自动生成 output 目录。把 output 目录复制出来:

# bin/hdfs dfs -get output output

注:我先把已存在的本地 output 目录删掉了。

# ll output
total 8
drwxr-xr-x  2 root root   42 Nov 30 19:55 ./
drwxr-xr-x 14 1024 1024 4096 Nov 30 19:55 ../
-rw-r--r--  1 root root    5 Nov 30 19:55 part-r-00000
-rw-r--r--  1 root root    0 Nov 30 19:55 _SUCCESS
# cat output/part-r-00000
6	hi

Fully-Distributed Mode

参考

  • https://hadoop.apache.org
  • https://yanglinwei.blog.csdn.net/article/details/125170230
  • https://stackoverflow.com/questions/48129029/hdfs-namenode-user-hdfs-datanode-user-hdfs-secondarynamenode-user-not-defined

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

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

相关文章

怎么架设魔兽世界服务器?

怎么架设魔兽世界服务器&#xff1f; 准备工具&#xff1a; 1、装有windows98/2000/xp/2003系统、内存至少256M的电脑一台 2、魔兽服务器端一个 3、mysql4.0.2&#xff08;不要用最新的5.0&#xff0c;有问题&#xff09; mysql-control-center0.9.4 MyODBC-standard-3.5…

TPM零知识学习四 —— tpm2-tss源码安装

tpm2-tss包的的安装方法参考&#xff1a; tpm2-tss/INSTALL.md at master tpm2-software/tpm2-tss GitHub 1. 源码下载 $ git clone https://github.com/tpm2-software/tpm2-tss.git 下载完成后&#xff0c;源码内容如下所示&#xff1a; $ ls afl-fuzzing CHANGELOG.m…

狂神说Go语言学习笔记(四)

狂神说Go语言学习笔记&#xff08;一&#xff09; 狂神说Go语言学习笔记&#xff08;二&#xff09; 狂神说Go语言学习笔记&#xff08;三&#xff09; 一、什么是函数 func main() {//调用函数 函数名()fmt.Println(add(1, 2)) //3 }func add(a, b int) int {c : a breturn …

hadoop3.x学习(一)--安装与环境配置

一、hadoop的组成 hadoop1.x&#xff1a;Commons、HDFS&#xff08;数据存储&#xff09;、MapReduce&#xff08;资源调度计算&#xff09;hadoop2.x:Commons、HDFS&#xff08;数据存储&#xff09;、MapReduce&#xff08;计算&#xff09;、Yarn(资源调度) 1.1 HDFS 分布式…

2万字一网通办远程视频踏勘建设方案67页

目 录 1. 建设背景 2. 建设周期 3. 需求分析 3.1. 需求定义 3.1.1. 需求活动目的 3.1.2. 需求分析流程 3.2. 技术需求 3.3. 用户分析 3.3.1. 办事企业 3.3.2. 踏勘人员 3.3.3. 审批人员 3.3.4. 系统管理人员 3.4. 性能需求 3.4.1. 系统架构 3.4.2. 响应时间 3.…

【目标检测】Faster R-CNN 论文复现代码(含源代码)

Faster R-CNN 论文复现代码 详细的代码使用守则&#xff1a; https://github.com/biluko/Faster-RCNN-Pytorch博客地址为&#xff1a; https://blog.csdn.net/wzk4869/article/details/128133224?spm1001.2014.3001.5501一、nets文件夹下 init.py classifier.py import w…

RK3588移植-ffmpeg交叉编译

文章目录1.下载ffmpeg2.交叉编译3.修改cmakelist.txt4.将lib文件复制到install目录下的lib目录5.测试文件6.运行测试样例7.错误n.测试文件源码1.下载ffmpeg git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg 2.交叉编译 进入下载目录&#xff0c;将ffmpeg编译成arm64平台…

【LeetCode每日一题:1779. 找到最近的有相同 X 或 Y 坐标的点~~~模拟遍历+曼哈顿距离】

题目描述 给你两个整数 x 和 y &#xff0c;表示你在一个笛卡尔坐标系下的 (x, y) 处。同时&#xff0c;在同一个坐标系下给你一个数组 points &#xff0c;其中 points[i] [ai, bi] 表示在 (ai, bi) 处有一个点。当一个点与你所在的位置有相同的 x 坐标或者相同的 y 坐标时&…

Go1.9.3跑GinDemo

Gin 1. 简介 1.1. 介绍 Gin是一个golang的微框架&#xff0c;封装比较优雅&#xff0c;API友好&#xff0c;源码注释比较明确&#xff0c;具有快速灵活&#xff0c;容错方便等特点 对于golang而言&#xff0c;web框架的依赖要远比Python&#xff0c;Java之类的要小。自身的n…

实验(六):定时器实验

一、实验目的与任务 实验目的&#xff1a; 1&#xff0e;掌握定时/计数器的中断法工作原理&#xff1b; 2&#xff0e;熟悉C51编程与调试方法。 任务&#xff1a; 1. 运行Keil开发环境&#xff0c;完成定时器软件编程&#xff1b; 2. 建立Proteus仿真模型&#xff1b; 3&#x…

Flink系列之Flink流式计算引擎基础理论

声明&#xff1a; 文章中代码及相关语句为自己根据相应理解编写&#xff0c;文章中出现的相关图片为自己实践中的截图和相关技术对应的图片&#xff0c;若有相关异议&#xff0c;请联系删除。感谢。转载请注明出处&#xff0c;感谢。 By luoyepiaoxue2014 B站&#xff…

mapbox地图动画一键飞行

最近&#xff0c;Mapbox GL JS 从 v2.9 开始支持将地图显示为 3D 地球。 话不多说&#xff0c;马上看看效果怎么样&#xff1a; mapbox地图动画我们通过设置投影属性projection&#xff1a;globe&#xff0c;即可将地图更改为地球 const map new mapboxgl.Map({container: m…

【Linux初阶】操作系统概念与定位 | 操作系统管理硬件方法、系统调用和库函数概念

&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f; &#x1f36d;&#x1f36d;系列专栏&#xff1a;【Linux初阶】 ✒️✒️本篇内容&#xff1a;操作系统的基础概念、设计OS的目的&#xff0c;操作系统的定位&#xff0c;操作系统管理硬件方法&#xff0c;…

荣誉!InterSystems被独立研究机构Forrester评为“事务分析型数据平台领导者”

2022 年 12 月 1 日&#xff0c;中国&#xff0c;北京——致力于帮助客户解决最关键的可扩展性、互操作性和速度问题的创新数据技术提供商 InterSystems 今天宣布&#xff0c;在Forrester日前公布的《The Forrester Wave™&#xff1a;事务分析型数据平台(2022年第4季度)》报告…

硬件学习路线调研

学习路线 《Verilog传奇》、《Verilog HDL高级数字设计》或者是《用于逻辑综合的VHDL》。不看书也能写出个三段式状态机就可以进入下一阶段了。 此外&#xff0c;你手上必须准备Verilog或者VHDL的官方文档&#xff0c;《verilog_IEEE官方标准手册-2005_IEEE_P1364》、《IEEE …

科研绘图配色方案

科研绘图配色方案 在撰写论文的时候&#xff0c;美观&#xff0c;大气&#xff0c;上档次的图表能够很好地给自己的论文加分。但是在绘制图表的时候往往会面临色彩搭配的问题&#xff0c;选择合适的色彩搭配能够有效地展示自己的方法&#xff0c;但是色彩搭配选择不当的话往往…

2021-02-01

oracle设置定期修改密码 --通过如下sql查询用户密码有效期配置 SELECT username,PROFILE FROM dba_users; --上述sql查询结果一般为default --使用如下sql可以查询到default的默认值 select * from dba_profiles where profile DEFAULT and resource_name PASSWORD_LI…

Express 7 指南 - 开发中间件

Express Express 中文网 本文仅用于学习记录&#xff0c;不存在任何商业用途&#xff0c;如侵删 文章目录Express7 指南 - 开发中间件7.1 概述7.2 例子7.2.1 中间件函数 myLogger7.2.2 中间件函数 requestTime7.2.3 中间件函数 validateCookies7.3 可配置的中间件7 指南 - 开发…

数据结构与算法 -二叉树

二叉树相关算法 1. 二叉树基本知识 &#xff08;1&#xff09;二叉树结构 public class Node {V value;Node left;Node right; }left和right只能往下指&#xff0c;没有节点就为空。 &#xff08;2&#xff09;创建二叉树 对于一个完全二叉树&#xff0c;父节点为i, 左子节点…

Unity3d bounds包围盒 和collider碰撞器区别

Bounds 外包围盒 Bounds 叫作外包围盒、边界框、外扩矩形.是struct 结构体。而我们获得Bounds的主要途径有三种&#xff1a;Render,Collider,Mesh。 Render.bounds 世界坐标 Collider.bounds 世界坐标 Mesh.bounds 本地坐标 var m GetComponent<MeshFilter>().bound…