Hadoop3.2.*安装

2023-11-07

CentOS8系统安装Hadoop-3.2.1伪分布式配置

Hadoop3.2.1版本的环境搭建 - Java提升营 - 博客园

[TOC]

实验目的

​ 在 Linux(VM15pro/CentOS8) 环境下完成Hadoop-3.2.1伪分布式环境的搭建,并运行 Hadoop 自带的 WordCount 实例检测是否运行正常。

一、下载并配置java环境

​ Java 环境可选择 Oracle 的 JDK,或是 OpenJDK,现在一般 Linux 系统默认安装的基本是 OpenJDK。通过 yum 进行安装 JDK,安装过程中会让输入 [y/N],输入 y 即可:

[root@localhost ~]# yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel

​ 接着我们需要配置Java的环境变量,打开/etc/profile文件最后面添加如图内容,并让该环境变量生效。

PS:yum 安装的jdk 1.8 的话,默认JAVA_HOME 都是 /usr/lib/jvm/java-1.8.0,总之都是在 /usr/lib/jvm/ 这个目录下

因为yum安装后会自动配置 环境变量,所以 安装后  直接指向javac 或者 Java -version 都是可以的,

但是 你会发现 /etc/profile 这个文件中其实是 没有JAVA_HOME配置的需要手动配置

# java
export JAVA_HOME=/usr/lib/jvm/java-1.8.0
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

[root@localhost ~]# source /etc/profile

​ 测试Java版本信息,了解环境变量配置是否成功

ps:  whereis java   可以查看Java的安装路径

二、下载并解压hadoop安装包

[root@localhost ~]# wget https://mirrors.bfsu.edu.cn/apache/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz
[root@localhost ~]# tar -xzvf hadoop-3.2.1.tar.gz

三、配置环境变量

​ 将hadoop配置写入/etc/profile中,并测试是否配置成功。

vi /etc/profile

# hadoop
export HADOOP_HOME=/home/hzp/software/hadoop/hadoop-3.2.1
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

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

四、修改相关配置文件

​ 1、修改 hadoop-3.2.1/etc/hadoop/hadoop-env.sh,

取消并修改添加export JAVA_HOME=,使其值为我们解压出jdk的位置。

vi /etc/hadoop/hadoop-env.sh

# 修改hadoop-env.sh,在最后边添加JAVA_HOME

export JAVA_HOME=/usr/lib/jvm/java-1.8.0

​ 2、修改hadoop-3.2.1/etc/hadoop/core-site.xml

vi core-site.xml

#在configuration标签中添加下面内容

<!--HDFS临时目录-->
<property>
    <name>hadoop.tmp.dir</name>

<!--hadoop主目录/tmp-->
    <value>/home/hzp/software/hadoop/hadoop-3.2.1/tmp</value>
</property>
<!--HDFS的默认地址、端口 访问地址-->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop0:9000</value>
</property>

​ 3、修改hadoop-3.2.1/etc/hadoop/hdfs-site.xml

vi hdfs-site.xml

#在configuration标签中添加下面内容

<!--hdfs web的地址-->
<property>
    <name>dfs.namenode.http-address</name>
    <value>hadoop0:50070</value>
</property>
<!--副本数-->
<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>
<!--是否启用hdfs权限,当值为false时,代表关闭-->
<property>
    <name>dfs.permissions.enabled</name>
    <value>false</value>
</property>
<!--块大小,默认128M-->
<property>
    <name>dfs.blocksize</name>
    <value>134217728</value>
</property>
 

​ 4、修改hadoop-3.2.1/etc/hadoop/mapred-site.xml

vi mapred-site.xml

#在configuration标签中添加下面内容

<!--local表示本地运行,classic表示经典mapreduce框架,yarn表示新的框架-->

<property>

    <name>mapreduce.framework.name</name>

    <value>yarn</value>

</property>

<!--如果map和reduce任务访问本地库(压缩等),则必须保留原始值,当此值为空时,设置执行环境的命令将取决于操作系统-->

<property>

    <name>mapreduce.admin.user.env</name>

<!--设置为hadoop主目录-->

    <value>HADOOP_MAPRED_HOME=/home/hzp/software/hadoop/hadoop-3.2.1</value>

</property>

<!--可以设置AM【AppMaster】端的环境变量-->

<property>

    <name>yarn.app.mapreduce.am.env</name>

<!--设置为hadoop主目录-->

    <value>HADOOP_MAPRED_HOME=/home/hzp/software/hadoop/hadoop-3.2.1</value>

</property>

​ 5、修改hadoop-3.2.1/etc/hadoop/yarn-site.xml 

vi yarn-site.xml

#在configuration标签中添加下面内容

<!--集群master-->

<property>

    <name>yarn.resourcemanager.hostname</name>

    <value>hadoop0</value>

</property>

<!--NodeManager上运行的附属服务-->

<property>

    <name>yarn.nodemanager.aux-services</name>

    <value>mapreduce_shuffle</value>

</property>

<!--容器可能会覆盖的环境变量,而不是使用NodeManager的默认值-->

<property>

    <name>yarn.nodemanager.env-whitelist</name>

    <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ</value>

</property>

<!--关闭内存检测,在虚拟机环境中不做配置会报错-->

<property>

    <name>yarn.nodemanager.vmem-check-enabled</name>

    <value>false</value>

</property>

6.编辑 集群下的worker 文件

 vi hadoop-3.2.1/etc/hadoop/workers

写入两个worker节点

hadoop0 hadoop1 hadoop2

 

克隆

五、设置ssh免密码登录

​ 执行下面命令检测是否已安装ssh

​ 利用 ssh-keygen 生成密钥,并将密钥加入到授权中,配置成SSH无密码登陆

  1. host配置

修改三台服务器的hosts文件

vim /etc/hosts

#添加下面内容,根据个人服务器IP配置

10.101.18.21 master
10.101.18.8 slave1
10.101.18.24 slave2

免密登陆配置

  1. 生产秘钥
ssh-keygen -t rsa
  1. master免密登录到slave中
ssh-copy-id -i ~/.ssh/id_rsa.pub master
ssh-copy-id -i ~/.ssh/id_rsa.pub slave1
ssh-copy-id -i ~/.ssh/id_rsa.pub slave2
  1. 测试免密登陆
ssh master 
ssh slave1
ssh slave2

六、开启hadoop

​ 1、格式化NameNode,使用start-all开启所有进程,并且使用jps查看进程情况。

[root@localhost hadoop-3.2.1]# hdfs namenode -format
[root@localhost hadoop-3.2.1]# start-all.sh
[root@localhost hadoop-3.2.1]# jps

​ 2、浏览器进行hadoop服务的访问,http://localhost:9870

七、WordCount 实例检测

​ 1、单机模式读取的是本地数据,伪分布式读取的则是 HDFS 上的数据。要使用 HDFS,首先需要在 HDFS 中创建用户目录,接着将 ./etc/hadoop 中的 xml 文件作为输入文件复制到分布式文件系统中 。

​ 2、复制完成后,可以通过如下命令查看 HDFS 中的文件列表:

​ 3、伪分布式读取的是HDFS中的文件,运行 MapReduce 作业 

​ 4、将输出文件从分布式文件系统复制到本地文件系统并查看

八、实验过程中报错解决

​ 1、HDFS创建用户目录时报“Name node is in safe mode”,使用下面命令退出安全模式。

​ 2、jps发现DataNode进程没有开启,查看日志发现报没法找到/dfs/data目录,造成原因是在每次执行hadoop namenode -format时,都会为NameNode生成namespaceID,,但是在hadoop.tmp.dir目录下的DataNode还是保留上次的namespaceID,因为namespaceID的不一致,而导致DataNode无法启动,解决方法如下:

​ 3、jps发现NameNode进程没有开启,日志报错是/tmp/hadoop-hadoop/dfs/name目录不存在或目录不可访问,解决方法是重新格式化文件系统如下:

HADOOP_HOME/sbin/stop-all.sh  			#先停止hadoop相关进程
HADOOP_HOME/bin/hdfs namenode -format 	#重新格式化文件系统
HADOOP_HOME/sbin/start-all.sh 			#重启hadoop,此时hadoop的相关进程正常启动

​ 4、要是上面情况出现依次走到这里,又发现jpsDataNode进程没有开启,这时候删掉/dfs/data文件,重启服务就行。 

​ 5、运行wordcount报错找不到或无法加载主类,设置classpath,重启yarn服务,具体如下: 

九、参考目录

[https://www.cnblogs.com/hanhaotian/p/11754393.html]:

[https://blog.csdn.net/weixin_49736959/article/details/108815976]:

[https://blog.csdn.net/haveqing/article/details/106006860]:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hadoop3.2.*安装 的相关文章

随机推荐

  • 修改Mysql数据库的用户名和密码【详细】

    数据库的用户名默认是root 1进入到Mysql 首先要登录数据库 1win r输入cmd 管理员身份打开 或者 2搜索输入命令提示符 2 输入mysql uroot p点击回车 注意 mysql默认用户名是root 我以前修改过 所以我输
  • 看起来很长但还是有用的Spring学习笔记

    本文首发于泊浮目的专栏 https segmentfault com blog Spring致力于提供一种方法管理你的业务对象 在大量Java EE的应用中 随处可见Spring 今天我将简单的介绍一下Spring这个框架 本文适合读者 想
  • Verilog中generate语句的用法

    在Verilog 2001中新增了语句generate 通过generate循环 可以产生一个对象 比如一个元件或者是一个模块 的多次例化 为可变尺度的设计提供了方便 generate语句一般在循环和条件语句中使用 为此 Verilog 2
  • DLL的引入方式(DllImport的特殊引入方式)

    Dll引入方式有四种 1 就是普通的比如一个解决方案中有多个项目 将其他项目的引入到该项目中 2 就是软件自带的程序集的引入 3 就是使用dll的引入 普通的本身就是VS的dll文件 4 就是使用dll的引入 不是属于该语言的vs的Dll文
  • 减少GC开销 &&可能出现内存泄漏的情况&&两个对象相互引用会不会被GC

    如何降低java GC开销 减少GC次数 其他详见 如何减少垃圾回收的次数 jvm虚拟机 1 选择一个较好的GC器 Java9在2017年九月发布 G1 Garbage First 垃圾回收器 成为 HotSpot 虚拟机默认的垃圾回收器
  • 还没用熟 TypeScript 社区已经开始抛弃了

    前端Q 我是winty 专注分享前端知识和各类前端资源 乐于分享各种有趣的事 关注我 一起做个有趣的人 公众号 点击上方 前端Q 关注公众号 回复加群 加入前端Q技术交流群 根据 rich harris talks sveltekit an
  • C# 加密解码各种方法

    目录 一 加密解密介绍 二 MD5 三 SHA x系列 四 DES 3DES 五 RC2 六 AES 七 Base64 八 Rsa 九 参考文献 一 加密解密介绍 不可逆加密 MD5 SHA x系列对称式加密 Des 3DES RC2 AE
  • “加密系统”的巨坑

    在来公司之前 我压根就不知道这世界上原来还有 加密系统 这种软件产品存在 学名叫数据防泄漏 也怪我孤陋寡闻了 因为之前在厦门从来没听说过哪家公司有在用加密系统 当然 每家公司都有自己独特的管理需求 也许公司这边也确实重要信息比较多 核心机密
  • java自定义排序

    java中sort的自定义排序 一 Arrays sort nums 的一般用法 二 最大数 力扣179 三 合并区间 力扣59 四 总结 一 Arrays sort nums 的一般用法 整个数组按照升序排序 若需要降序排序 将数组转置即
  • ng-model数据绑定实例

    ng mode的作用是数据绑定 placeholder是默认显示值 在input里面输入任何字符都会对应显示到你下面ng model对应的name中 name
  • Python 3基础教程19-模块导入语法

    本文开始介绍模块导入的一些基本语法 我们现在还在Python自带的IDLE编辑器里写Python代码 如果你要需要一个功能 例如build in的模块 那么你就需要先导入这个模块 然后才能使用这个模块相关方法 不像在Pycharm编辑器了
  • 剑指 Offer 18. 删除链表的节点

    题目链接 18 删除链表的节点 Definition for singly linked list struct ListNode int val ListNode next ListNode int x val x next NULL c
  • 良品铺子年报:将冲击百亿营收门槛 斥资1.8亿现金分红

    雷递网 雷建平 3月23日报道 良品铺子 603719 SH 日前公布2021年度业绩 财报显示 良品铺子2021年公司营收93 24亿元 较2020年的78 94亿元增长18 11 近五年营收翻番 这意味着 良品铺子2022年将冲击百亿门
  • local_irq_save和 local_irq_disable

    如果你要禁止所有的中断该怎么办 在2 6内核中 可以通过下面两个函数中的其中任何一个关闭当前处理器上的所有中断处理 这两个函数定义在
  • constraints java_java-来自javax.validation.constraints的注释不起作用

    java 来自javax validation constraints的注释不起作用 使用id 如name NotNull等 中的注释需要什么配置 这是我的代码 import javax validation constraints Not
  • 深入理解Solidity——创建合约

    Solidity的合约类似于面向对象语言中的类 它们包含存放持久化数据的状态变量和可修改这些变量的函数 调用不同的合约实例上的函数将执行EVM函数调用 从而切换上下文 使得状态变量不可访问 创建合约 Creating Contracts 合
  • 支付宝商户转账给支付宝个人

    首先引入支付宝的jar
  • TorchServe部署pytorch模型

    文件准备 1 model file model py 参考 https github com pytorch serve blob master examples object detector maskrcnn model py 2 se
  • GODIVA论文阅读

    论文链接 GODIVA Generating Open DomaIn Videos from nAtural Descriptions 文章目录 摘要 引言 相关工作 Video to video generation Text to im
  • Hadoop3.2.*安装

    CentOS8系统安装Hadoop 3 2 1伪分布式配置 Hadoop3 2 1版本的环境搭建 Java提升营 博客园 TOC 实验目的 在 Linux VM15pro CentOS8 环境下完成Hadoop 3 2 1伪分布式环境的搭建