Ubuntu搭建Hadoop环境

news2024/10/5 18:06:38

本文是在一个全新的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.coloradmin.cn/o/52579.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于人工神经网络的车牌识别系统的研究(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

用HTTP proxy module配置一个简单反向代理服务器

预备知识 反向代理 反向代理&#xff08;reverse proxy&#xff09;方式是指用代理服务器来接受Internet上的连接请求&#xff0c;然后将 请求转发给内部网络中的上游服务器&#xff0c;并将从上游服务器上得到的结果返回给Internet上请求 连接的客户端&#xff0c;此时代理服…

自定义表单、自定义流程、自定义页面、自定义报表应用开发平台

真正的大师,永远都怀着一颗学徒的心&#xff01; 一、项目简介 Java开发框架&#xff0c;自定义表单、自定义页面、自定义流程、自定义报表应用开发平台 二、实现功能 支持系统文件在线管理 支持代码在线编辑 支持URL 路由 支持黑白名单 支持定时任务 支持在线监控 支持…

Java+JSP+MySQL基于SSM的会议交接平台的设计与实现-计算机毕业设计

项目介绍 随着社会竞争压力的不断加强&#xff0c;企事业单位内部的会议都在不断的增加&#xff0c;有效的会议可以提高企事业内部的沟通&#xff0c;更好的做出符合战略目标的决策&#xff0c;但是传统的会议交接有一定的问题存在&#xff0c;首先就是必须面对面进行传达&…

突破卡脖子技术 AVS3标准在世界杯实现移动端规模化商用

11月25日,在2022卡塔尔世界杯B组第二轮比赛中,亚洲球队又一次脱颖而出,伊朗连进2球,2:0战胜威尔士,双方鏖战至最后时刻,奉上了一场精彩的比赛。 作为2022卡塔尔世界杯持权转播商,中国移动咪咕上线“睛彩视界”独家视角,通过国家自主的AVS3、Audio Vivid编解码标准为用户带来“…

基于51单片机智能IC卡燃气表控制(仿真+源程序+全套资料)

资料编号&#xff1a;199 功能介绍&#xff1a; 采用51单片机作为主控CPU&#xff0c;使用按键进行模拟冲卡&#xff08;模拟缴费冲卡&#xff09;&#xff0c;通过按键来控制当前是否使用燃气&#xff0c;并且LCD1602实时显示当前燃气可用量剩余多少&#xff0c;当燃气不足时…

ARM-A架构入门基础(三)MMU

14天学习训练营导师课程&#xff1a;周贺贺《ARMv8/ARMv9架构-快速入门》 1. MMU&#xff08;Memory Management Unit&#xff09; 内存管理单元&#xff0c;MMU的意义在于将软件程序的虚拟地址转换为真实的物理地址。 2. MMU种类 Secure EL1&0 translation regime, wh…

基于约束关系的图表设计

标准的基于 GUI 的图形设计工具仅支持有限的“对齐向导”风格的定位&#xff0c;具有基本的对象分组系统&#xff0c;并实现对齐或分布对象的原始功能。这些工具没有办法记住对象之间的约束和关系&#xff0c;也没有办法定义和重用抽象。我一直不满意现有的设计工具&#xff0c…

[附源码]Python计算机毕业设计Django二次元信息分享平台的设计及实现

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…

短视频不知道怎么定位?教你三个自我商业定位的方法,收藏学习

上一篇内容是我在我赢助手小禾呈序上讲了哪几类产品更适合私域变现&#xff0c;当然我相信有很多做抖音但没想好怎么变现的对吧&#xff1f; 如果说你还停留在我也不知道我可以靠什么赚钱这样的一个状态当中。那我给你三个自我商业定位的方法。 第一个方法&#xff0c;从工作上…

虹科Pico汽车示波器学院 | 第二课直播精彩回顾

直播精彩回顾&#xff08;11.19&#xff09; 第二课主题&#xff1a;《为什么使用示波器&#xff0c;可加速技师的技术水平提升&#xff1f;》 11月19日&#xff0c;虹科Pico汽车示波器学院第二课成功开课。第二课中&#xff0c;戈老师向学员们讲解了&#xff1a; 汽车示波器…

【网安神器篇】——LaZagne凭证收集工具

作者名&#xff1a;Demo不是emo 主页面链接&#xff1a;主页传送门 创作初心&#xff1a;舞台再大&#xff0c;你不上台&#xff0c;永远是观众&#xff0c;没人会关心你努不努力&#xff0c;摔的痛不痛&#xff0c;他们只会看你最后站在什么位置&#xff0c;然后羡慕或鄙夷座…

144.二叉树的前序遍历 递归 | 94.二叉树的中序遍历 递归 |145.二叉树的后序遍历 递归

144.二叉树的前序遍历 题目 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3]示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[]示例 3&#xff1a; 输入&#xff1a;root …

11月动态|通过PWmat计算的离子浓度自由能相关文献发表在JCTC

11月 11月&#xff0c;龙讯旷腾完成Q-Flow和Q-Studio新版本的升级&#xff0c;完成了40余项功能的更新和上线&#xff1b;签约并行科技在高性能计算领域再下一城&#xff1b;汪林望博士受海河实验室邀请作线上主题报告&#xff1b;通过PWmat计算的离子浓度自由能相关文献发表在…

Unity笔记(15):OnTriggerEnter2D [2D]

1、给玩家标签设为Player 2、给碰撞的物体增加碰撞盒&#xff0c;并勾选isTrigger 3、编写脚本挂载到物体上 实现碰撞后物体会消失。 using System.Collections; using System.Collections.Generic; using UnityEngine;public class luobo : MonoBehaviour {private void OnT…

LeetCode-50-Pow(x, n)

1、递归 我们最简单的思路就是使用递归&#xff0c;每次就让x乘上Pow(x, n-1)的值。但是这样做的缺点在于递归时间过长会导致超时&#xff0c;因此我们可以使用快速幂进行优化。 快速幂的思想在于我们在求x的N次幂时&#xff0c;不使用x∗xN−1x*x^{N-1}x∗xN−1&#xff0c;…

访问工具--

下载地址: Releases Fndroid/clash_for_windows_pkg GitHub https://github.com/Fndroid/clash_for_windows_pkg/releases 安装好clash后,可以通过订阅链接或者导入yaml文件使用: 1、订阅链接 2、导入yaml文件 报错排查 你可能会遇到报错could not switch to this…

硬件学习路线调研

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

Hive分区表数据压缩

Hive分区表数据压缩 1.背景 目前公司的Hive分区表采用的TextFile格式存储&#xff0c;占用的存储空间较大&#xff0c;考虑到存储成本&#xff0c;需要对存储的历史数据进行压缩。 2.压缩格式选择 2.1 snappy压缩 优点&#xff1a;高速压缩速度和合理的压缩率&#xff1b;…

java - 数据结构,顺序表

1、顺序表和链表都属于数据结构的一部分。 2、数据结构:C的数据结构和JAVA的数据结构有什么不一样啊? 数据结构只是一个单独的学科&#xff0c;和语言没有关系。 用不同的语言实现一样的逻辑。 一、线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据…