当前位置: 首页 > news >正文

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

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

在这里插入图片描述

Hadoop

hadoop的安装方式

单机模式:

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

伪分布式模式

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

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

分布式模式

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

安装hadoop

下载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用户

[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的单机配置

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伪分布式配置

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的配置文件说明

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

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

hadoop集群的安装请看下一篇文章

相关文章:

  • 应用层协议 HTTP HTTPS
  • Linux内核学习笔记——页表的那些事。
  • 一文带你入门,领略angular风采(上)!!!
  • 嵌入式学习笔记——STM32硬件基础知识
  • 2023年“网络安全”赛项浙江省金华市选拔赛 任务书
  • Qt安装与使用经验分享;无.pro文件;无QTextCodec file;Qt小试;界面居中;无缝;更换Qt图标;更换Qt标题。
  • MyBatis常用的俩种分页方式
  • Python---正则表达式
  • 基于flask+bootstrap+echarts+mysql的鱼村小馆订餐后台管理系统
  • 逻辑优化-rewrite
  • ECharts可视化库--常用组件
  • 【FPGA】Verilog:时序电路应用 | 序列发生器 | 序列检测器
  • 【软件使用】MarkText下载安装与汉化设置 (markdown快捷键收藏)
  • 【前端必看】极大提高开发效率的网页 JS 调试技巧
  • VMware虚拟机安装Linux教程
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • input实现文字超出省略号功能
  • node和express搭建代理服务器(源码)
  • PhantomJS 安装
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • Redux系列x:源码分析
  • vue 个人积累(使用工具,组件)
  • 第十八天-企业应用架构模式-基本模式
  • 仿天猫超市收藏抛物线动画工具库
  • 分享几个不错的工具
  • 关于List、List?、ListObject的区别
  • 好的网址,关于.net 4.0 ,vs 2010
  • 简单数学运算程序(不定期更新)
  • 前端
  • 前端攻城师
  • 人脸识别最新开发经验demo
  • 算法-图和图算法
  • 项目实战-Api的解决方案
  • 学习JavaScript数据结构与算法 — 树
  • 以太坊客户端Geth命令参数详解
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • gunicorn工作原理
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #pragma 指令
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • ()、[]、{}、(())、[[]]命令替换
  • (06)金属布线——为半导体注入生命的连接
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (八)Spring源码解析:Spring MVC
  • (二)斐波那契Fabonacci函数
  • (二十四)Flask之flask-session组件
  • (译) 函数式 JS #1:简介
  • ./和../以及/和~之间的区别
  • .NET Core 2.1路线图
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?