自学大数据第三天~终于轮到hadoop了

news/2024/5/20 1:30:11 标签: hadoop, 大数据, hdfs

前面那几天是在找大数据的门,其实也是在搞一些linux的基本命令,现在终于轮到hadoop

在这里插入图片描述

Hadoop

hadoop_6">hadoop的安装方式

单机模式:

就如字面意思,在一台机器上运行,存储是采用本地文件系统,没有采用分布式文件系统~就如我们一开始入门的时候都是从本地开始的;

伪分布式模式

存储采用分布式文件系统,但是HDFS的名称节点和数据节点都在同一台机器上;

简单来说就像我们学习微服务的时候,只有一台机器,只能采用不同的端口号来实现微服务的开发,

分布式模式

存储采用分布式文件系统,HDFS的名称节点和数据节点位于不同的机器上~这才符合分布式的要求;

hadoop_21">安装hadoop

hadoop_23">下载hadoop

此时是以root用户登陆的系统

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

解压缩文件

tar -zxf hadoop-3.3.4.tar.gz

加压完毕之后将文件的权限授予hadoop用户,以免后续出现什么问题;

hadoop_37">授权解压的文件给hadoop用户

[root@node1 local]# sudo chown -R hadoop ./hadoop-3.3.4
#切换用户
[root@node1 local]# su hadoop
[hadoop@node1 local]$ 

在这里插入图片描述
查看hadoop是否可以正常运行

cd hadoop-3.3.4
./bin/hadoop  version

结果如下~
在这里插入图片描述

hadoop_54">hadoop的单机配置

hadoop下载下来之后默认是非分布式模式,无需其他配置即可运行;

非分布式即java的单进程模式,这个我们就很擅长了,拿来直接运行即可;

首先来看官网给的例子(别的例子咱也不会,入门一下,日后在搞复杂的)

  • 请听第一题

我们将input文件夹下所有的文件作为输入,筛选出符合正则表达式dfs[a-z.]+的单词并统计出现次数

mkdir ./input  #创建一个文件夹

#拷贝hadoop配置文件到 刚刚创建的input文件夹下

cp ./etc/hadoop/*.xml  ./input
#执行hadoop命令~

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep ./input ./output 'dfs[a-z.]+'

查看output文件夹下的内容
cat ./output/*

我们来看一下我们复制时都复制了些什么

[hadoop@node1 hadoop-3.3.4]$ ls ./input/
capacity-scheduler.xml  hadoop-policy.xml  hdfs-site.xml    kms-acls.xml  mapred-site.xml
core-site.xml           hdfs-rbf-site.xml  httpfs-site.xml  kms-site.xml  yarn-site.xml
[hadoop@node1 hadoop-3.3.4]$ 

再来看看 输出的文件中都有什么

[hadoop@node1 hadoop-3.3.4]$ cd output/
[hadoop@node1 output]$ ls
part-r-00000  _SUCCESS
[hadoop@node1 output]$ 

这是什么?
在这里插入图片描述我们再来看执行成功后的提示~
在这里插入图片描述回头再来看hadoop执行的命令

#头部命令
./bin/hadoop jar 

有些类似于java执行jar 的那个逻辑

 java jar  

看看hadoop文件中都写了什么…
乌压压一大片(暂且搁置一边)
在这里插入图片描述源码自取

然后就是参数部分
./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar

找到它~可以看到是一些打包好的jar包,就是提前写好的代码去执行一些运算,以后我们也可以写代码打包后交给hadoop运行
在这里插入图片描述在这里插入图片描述

**注意,**Hadoop 默认不会覆盖结果文件,因此再次运行上面实例会提示出错,需要先将 ./output 删除。

hadoop_126">hadoop伪分布式配置

hadoop可以在单节点上以伪分布式的方式运行,这个由hadoop进程分离的java进程来运行,节点既可以作为namenode也可以作为datanode,同时读取hdfs中的文件.

伪分布式需要一些配置,其配置文件在etc/hadoop/ 中,需要修改两个配置文件

  1. core-site.xml
    找到该文件并修改他
vi  /usr/local/hadoop-3.3.4/etc/hadoop/core-site.xml

文件中添加如下内容

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop3.3.4/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

在这里插入图片描述
大体是配置了一个临时存储文件夹的地址和一个访问的网址

  1. hdfs-site.xml

找到配置文件并修改他

vi  /usr/local/hadoop-3.3.4/etc/hadoop/hdfs-site.xml

添加如下内容

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
</configuration>

在这里插入图片描述

大体就是配置了namenode节点和datanode节点

hadoop_186">hadoop的配置文件说明

hadoop的运行方式是由配置文件决定的(hadoop在运行时会读取配置文件)
由于一开始并没有配置任何内容,所以是单机模式;

按照hadoop的与运行方式来说,伪分布式子需要配置fs.defaultFS 和 dfs.replication 就可以了,但是若没有配置hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop, 而这个目录会在机器重启时可能会被删掉,导致必须重新执行format才行;
我们也指定了namenode节点跟datanode节点
配置完成后

初始化namenode

cd /usr/local/hadoop

./bin/hdfs namenode -format

在这里插入图片描述看到success就表示执行成功了;

啥?没看到?这就尴尬了,截个图给你看看

在这里插入图片描述
再去文件夹下看看有没有对应的文件建立

ll  ./tmp/dfs/name/current/

在这里插入图片描述
如果出现错误:
1.JAVA_HOME 错误,那就去配置一下 hadoop-env.sh文件 ,重新配置一下JAVA_HOME
2.文件夹创建失败,可能是当前用户没有权限,给当前用户授权

sudo chown -R hadoop  /usr/local/hadoop-3.3.4 

开启namenode和datanode节点

./sbin/start-dfs.sh

在这里插入图片描述开启之后访问一下配置文件中的那个网址:

注:这里用虚拟机的ip地址;

在这里插入图片描述datanode节点的信息
在这里插入图片描述

启动hadoop时遇到的一些问题集锦:
专门从网上找的,虽然现在还没有遇到,说不定以后会遇到,这样也能快速知道如何解决;
速度自取

接下来就是回顾时刻,这几天我们通过学习 了解到hadoop 的一些知识

首先是:
1,hadoop的环境-配置jdk
2,hadoop各个节点之间的交流通过ssh加密 --配置ssh
3,hadoop的运行三种方式:

  • 单体模式
  • 伪分布式
  • 分布式

4,hadoop的运行命令
首先在hadoop文件下的bin目录有很多可以运行的命令文件
目前接触到了
启动hadoop ~ ~

 ./bin/hadoop  jar  写好的打包程序  其他的运行配置

5,配置伪分布式的关键配置文件:

core-site.xml ~配置了临时文件夹
hdfs-site.xml ~配置了namenode节点和datanode节点以及一个访问html的地址

6,配置结束后 格式化namenode

./bin/hdfs namenode -format

7,启动namenode以及datanode守护进程

./sbin/start-dfs.sh

在这里插入图片描述未完待续~ 另一台机器操作一遍在熟悉一下啊!


http://www.niftyadmin.cn/n/119714.html

相关文章

详解进程 及 探查进程

进程的概念PCB是什么task_struct的作用如何执行进程进程的探查什么是bashps命令的使用&#xff08;查看进程&#xff09;创建进程探究父子进程进程的概念 简而言之&#xff0c;进程就是正在在执行的程序 之前说过&#xff0c;程序执行的第一步Windows是双击程序Linux是 ./ &a…

react动态路由组件的封装

react动态路由组件的封装 我这篇比较全面 首先下载包 npm i react-router-dom5 这里为什么要用5的版本为啥不用最新的&#xff0c;原因在于老版本跟新版本写法不一样 老版本 import { HashRouter, Route, Switch, Redirect } from react-router-dom;render() {return (<Ha…

数据结构刷题(十七):530二叉搜索树最小绝对差、501二叉搜索树中的众数、236二叉树的最近公共祖先、235二叉搜索树的最近公共祖先

一、二叉搜索树的最小绝对差题目链接思路&#xff1a; 中序遍历保留为list for循环找最小绝对差二叉搜索树中序遍历后是有序的数组&#xff01;&#xff01;注意&#xff1a;i 1开始遍历解法&#xff1a;public int getMinimumDifference(TreeNode root) {List<Integer>…

使用 JaCoCo 生成测试覆盖率报告

0、为什么要生成测试覆盖率报告 在我们实际的工作中&#xff0c;当完成程序的开发后&#xff0c;需要提交给测试人员进行测试&#xff0c;经过测试人员测试后&#xff0c;代码才能上线到生产环境。 有个问题是&#xff1a;怎么能证明程序得到了充分的测试&#xff0c;程序中所…

git常用基本操作

克隆远程代码更新本地代码 git clone <-b | -branch> [branch name] [repository URL] git pull #拉取远程仓库代码&#xff0c;更新本地仓库 git merge <branch-name> #合并目标分支 建立本地仓库分支 git branch #查看当…

CS5261typec转HDMI|CS5260typec转VGA视频转换方案参考设计与PCB板开发

CS5261typec转HDMI|CS5260typec转VGA视频转换方案参考设计与PCB板开发 CS5261 CS5260分别是Type-C转HDMI或者VGA高性能 视频转换芯片&#xff0c;CS5261 是Type-C转HDMI 4K30HZ转换芯片 CS5260是Type-C转VGA 转换芯片。CS5261与CS5260两种芯片的功能和参数特性如下&#xff1…

经典分类模型回顾3-AlexNet实现图像分类(matlab版)

AlexNet是一种深度卷积神经网络&#xff0c;用于识别图像中的物体。它是由Alex Krizhevsky&#xff0c;Ilya Sutskever和Geoffrey Hinton在2012年提出的。它在ImageNet图像识别竞赛中获得了第一名。 在MATLAB中&#xff0c;可以使用Deep Learning Toolbox实现AlexNet进行图像分…

【C++】string的成员函数、成员常量和非成员函数

目录 string 1. string的成员函数 1.1 构造、析构和赋值运算符重载 1.1.1 构造函数 1.1.2 析构函数 1.1.3 赋值运算符重载 1.2 迭代器 1.3 容量 1.4 元素访问 1.4.1 遍历方法 1.5 修改器 1.6 字符串操作 2. string的成员常量 3. string的非成员函数 string 以下…