Hadoop-3.2.3集群搭建

2023-11-09

Hadoop-3.2.3集群搭建

一、准备工作

准备三台最小化安装的Linux服务器:(单节点伪集群一台虚拟机即可,hdfs配置副本数设置为1,worker只有一个。)

ipaddress hostname
192.168.116.10 hadoop1
192.168.116.20 hadoop2
192.168.116.30 hadoop3

所有节点推荐最小化安装Centos7.9或Ubuntu2004LTS。(单主机内存需>=4G)
1、配置网络连通性,每台机器配置固定IP地址和DNS等网络信息
2、主机名hostname设置和主机名解析
3、配置时区和时间服务器,确保集群时间同步
4、系统优化,关闭不需要的服务并进行文件系统基本优化
5、添加hadoop用户(使用root用户可跳过,ubuntu下注意adduser和useradd区别,使用adduser)

# adduser hadoop
# su - hadoop

6、配置用户免密钥登录
7、下载Oracle Java8包,解压并配置环境变量

链接:https://pan.baidu.com/s/182pYEdrnETntMDbPsg4rLw?pwd=02aw 
提取码:02aw 

设置Java8环境变量(可将如下内容添加到~/.bashrc里)

export JAVA_HOME=~/jdk1.8.0_321
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
export HADOOP_CLASSPATH=$JAVA_HOME/lib/tools.jar

验证java

$ java -version
java version "1.8.0_321"
Java(TM) SE Runtime Environment (build 1.8.0_321-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.321-b07, mixed mode)

二、Hadoop配置

1、下载hadoop

链接:https://pan.baidu.com/s/1gIyKxOjfVsxEpxgTIpa8aA?pwd=er4m 
提取码:er4m 

2、解压

 $ tar -zxvf hadoop-3.2.3.tar.gz

3、查看文件属主是否是当前用户

 $ ls -l

如果和当前用户属主不一致修改为当前用户
4、设置Hadoop环境变量(可将如下内容添加到~/.bashrc里),确保路径和用户和实际一致。

export HADOOP_HOME=~/hadoop-3.2.3
export HADOOP_MAPRED_HOME=~/hadoop-3.2.3
export HADOOP_YARN_HOME=~/hadoop-3.2.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HDFS_NAMENODE_USER=hadoop
export HDFS_DATANODE_USER=hadoop
export HDFS_SECONDARYNAMENODE_USER=hadoop
export YARN_RESOURCEMANAGER_USER=hadoop
export YARN_NODEMANAGER_USER=hadoop

使环境变量生效后验证

$ source ~/.bashrc
$ hadoop version

Haoop配置文件都在~/hadoop-3.2.3/etc/hadoop/目录下

$ cd ~/hadoop-3.2.3/etc/hadoop/

几个主要配置文件包括hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml和workers
1、hadoop-env.sh中需要配置一些基础环境变量路径,查看环境变量后填入正确的路径

$ echo $JAVA_HOME
$ echo $HADOOP_HOME
$ vi hadoop-env.sh
export HADOOP_HOME=
export JAVA_HOME=

2、core-site.xml中主要指定了文件系统默认访问地址和端口,以及hdfs文件系统默认目录

<configuration>
<!--hdfs服务地址和端口 -->
<property>
        <name>fs.defaultFS</name>
         <value>hdfs://hadoop1:9000</value>
</property>
<!--hadoop文件系统目录,namenode、secondarynamenode和data默认都在此目录下,默认为/tmp/hadoop-${user.name}-->
<property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/hadoop-3.2.3</value>
</property>
</configuration>

3、hdfs-site.xml配置主要指定namenode、secondarynamenode节点和服务端口,以及副本数和安全检查。

<configuration>
<!--hdfs namenode的http地址,默认为0.0.0.0:9870 -->
<property>
        <name>dfs.namenode.http-address</name>
         <value>hadoop1:9870</value>
</property>
<!--hdfs secondarynamenode的http地址,默认为0.0.0.0:9868,如需将secondarynamenode放在其他节点,修改主机名即可 -->
<property>
        <name>dfs.namenode.secondary.http-address</name>
         <value>hadoop1:9868</value>
</property>
<!-- HDFS副本数,默认为3,单节点伪集群需设置为1 -->
<property>
        <name>dfs.replication</name>
         <value>3</value>
</property>
<!-- 文件分块大小,默认128MB -->
<property>
 <name>dfs.blocksize</name>
 <value>128m</value>
</property>
<!-- 是否启用hdfs权限检查 ,默认为true开启的,设置为false关闭 -->
<property>
        <name>dfs.permissions.enabled</name>
         <value>false</value>
</property>
</configuration>

4、mapred-site.xml配置主要指定了MR框架以及一些环境变量

<configuration>
<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
</property>
<property>
        <name>mapreduce.admin.user.env</name>
        <value>HADOOP_MAPRED_HOME=/home/hadoop/hadoop-3.2.3</value>
</property>
<property>
        <name>mapreduce.application.classpath</name>
        <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property>
<property>
        <name>yarn.app.mapreduce.am.env</name>
        <value>HADOOP_MAPRED_HOME=/home/hadoop/hadoop-3.2.3</value>
</property>
</configuration>

5、yarn-site.xml

<configuration>
<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
<property>
        <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
        <name>yarn.resourcemanager.hostname</name>
                <value>hadoop1</value>
</property>
<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_MAPRED_HOME</value>
</property>
<property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
</property>
</configuration>

6、worker配置是所有集群节点,使用主机名或IP地址
$ vi workers

hadoop1
hadoop2
hadoop3

单节点伪集群副本数设置为1,worker只有一个即可。

将hadoop整个目录拷贝到其他节点。

$ scp -r ~/hadoop-3.2.3 hadoop02:~/
$ scp -r ~/hadoop-3.2.3 hadoop03:~/

将配置好的.bashrc文件也拷贝过去。
首先,格式化文件系统
格式化文件系统:

$ hdfs namenode -format

启动HDFS

$ start-dfs.sh

查看服务是否运行

$ jps

正常情况hadoop1节点会看到NameNode、SecondaryNameNode和DataNode,其他两个节点只有DataNode。
hadoop日志输出到$HADOOP_LOG_DIR目录(默认为HADOOP_HOME/logs,可通过配置修改)

NameNode节点web访问地址:http://hadoop1:9870/ (客户端可添加解析直接访问)

创建HDFS文件系统当前用户目录:

$ hdfs dfs -mkdir /user
$ hdfs dfs -mkdir /user/hadoop/
$ hdfs dfs -ls /

测试:

 输入文件拷贝到分布式文件系统:
 创建input文件夹
 $ hdfs dfs -mkdir input
查看
$ hdfs dfs -ls /user/hadoop
上传文件测试
$ hdfs dfs -put ~/hadoop-3.2.3/etc/hadoop/*.xml input
查看
$ hdfs dfs -ls /user/lzu_cg/input
查看块状态报告:
$ hdfs dfsadmin -report

启动ResourceManager和NodeManager服务进程:

$ start-yarn.sh
查看
$ jps

hadoop1节点会多出ResourceManager和NodeManager进程,其他工作节点会多出NodeManager
浏览器访问地址:http://hadoop1:8088/
启动MapReduce JobHistory Server历史服务器和timelineserver时间线服务器:

$ mapred --daemon start historyserver
$ yarn --daemon start timelineserver
web访问地址 - http://hadoop1:19888/

测试运行pi程序:
先进入到程序示例.jar包所在的目录,然后运行MR程序:

$ cd ~/hadoop-3.2.3/share/hadoop/mapreduce/
$ hadoop jar hadoop-mapreduce-examples-3.2.3.jar pi 10 20

运行成功即可。

关闭集群服务:

$ stop-yarn.sh
$ stop-dfs.sh
$ mapred --daemon stop historyserver
$ yarn --daemon stop timelineserver

如需启动集群,先启动dfs,再启动yarn

$ start-dfs.sh
$ start-yarn.sh

停止时先停止yarn再停止dfs

$ stop-yarn.sh
$ stop-dfs.sh

HDFS 常用 shell 命令

1. 显示当前目录结构

# 显示当前目录结构
hadoop fs -ls  <path>
# 递归显示当前目录结构
hadoop fs -ls  -R  <path>
# 显示根目录下内容
hadoop fs -ls  /

2. 创建目录

# 创建目录
hadoop fs -mkdir  <path> 
# 递归创建目录
hadoop fs -mkdir -p  <path>  

3. 删除操作

# 删除文件
hadoop fs -rm  <path>
# 递归删除目录和文件
hadoop fs -rm -R  <path> 

4. 从本地加载文件到 HDFS

# 二选一执行即可
hadoop fs -put  [localsrc] [dst] 
hadoop fs - copyFromLocal [localsrc] [dst] 

5. 从 HDFS 导出文件到本地

# 二选一执行即可
hadoop fs -get  [dst] [localsrc] 
hadoop fs -copyToLocal [dst] [localsrc] 

6. 查看文件内容

# 二选一执行即可
hadoop fs -text  <path> 
hadoop fs -cat  <path>  

7. 显示文件的最后一千字节

hadoop fs -tail  <path> 
# 和Linux下一样,会持续监听文件内容变化 并显示文件的最后一千字节
hadoop fs -tail -f  <path> 

8. 拷贝文件

hadoop fs -cp [src] [dst]

9. 移动文件

hadoop fs -mv [src] [dst] 

10. 统计当前目录下各文件大小

  • 默认单位字节
  • -s : 显示所有文件大小总和,
  • -h : 将以更友好的方式显示文件大小(例如 64.0m 而不是 67108864)
hadoop fs -du  <path>  

11. 合并下载多个文件

  • -nl 在每个文件的末尾添加换行符(LF)
  • -skip-empty-file 跳过空文件
hadoop fs -getmerge
# 示例 将HDFS上的hbase-policy.xml和hbase-site.xml文件合并后下载到本地的/usr/test.xml
hadoop fs -getmerge -nl  /test/hbase-policy.xml /test/hbase-site.xml /usr/test.xml

12. 统计文件系统的可用空间信息

hadoop fs -df -h /

13. 更改文件复制因子

hadoop fs -setrep [-R] [-w] <numReplicas> <path>
  • 更改文件的复制因子。如果 path 是目录,则更改其下所有文件的复制因子
  • -w : 请求命令是否等待复制完成
# 示例
hadoop fs -setrep -w 3 /user/hadoop/dir1

14. 权限控制

# 权限控制和Linux上使用方式一致
# 变更文件或目录的所属群组。 用户必须是文件的所有者或超级用户。
hadoop fs -chgrp [-R] GROUP URI [URI ...]
# 修改文件或目录的访问权限  用户必须是文件的所有者或超级用户。
hadoop fs -chmod [-R] <MODE[,MODE]... | OCTALMODE> URI [URI ...]
# 修改文件的拥有者  用户必须是超级用户。
hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]

15. 文件检测

hadoop fs -test - [defsz]  URI

可选选项:

  • -d:如果路径是目录,返回 0。
  • -e:如果路径存在,则返回 0。
  • -f:如果路径是文件,则返回 0。
  • -s:如果路径不为空,则返回 0。
  • -r:如果路径存在且授予读权限,则返回 0。
  • -w:如果路径存在且授予写入权限,则返回 0。
  • -z:如果文件长度为零,则返回 0。
# 示例
hadoop fs -test -e filename
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hadoop-3.2.3集群搭建 的相关文章

随机推荐

  • dell计算机运行慢怎么解决方法,戴尔笔记本电脑运行速度慢怎么办?

    戴尔笔记本电脑运行速度慢怎么办 戴尔 Dell 是一家总部位于美国德克萨斯州朗德罗克的世界五百强企业 由迈克尔 戴尔于1984年创立 戴尔以生产 设计 销售家用以及办公室电脑而闻名 不过它同时也涉足高端电脑市场 生产与销售服务器 数据储存设
  • testlink用例转换导入

    testlink用例转换导入 我们在用testlink进行用例管理的时候 发现用例不能用excel进入导入 只支持xml文件格式的导入 这对我们写用例来说是不太方便的 我自己开发了一个testlink的excel用例转xml文件的小工具 便
  • c# 序列化和反序列化

    using System using System Text using System Runtime Serialization using System Runtime Serialization Json using System I
  • Spring Security 跳过登录检查/非页面登录/骗过spring security的 filter 登录检查拦截

    背景 最近在使用Spring security 做一个系统的SSO认证代理 另一个项目组开发的 基于 filter 拦截器检查session中是否已有用户登录信息 如果已在SSO登录的话 则直接跳过SSO的认证 由于Spring secur
  • webpack loader和plugin编写

    1 基础回顾 首先我们先回顾一下webpack常见配置 因为后面会用到 所以简单介绍一下 1 1 webpack常见配置 入口文件 entry app src js index js 输出文件 output filename name bu
  • msvcp140.dll是什么?怎么解决电脑提示msvcp140.dll丢失的问题?(分享解决方法)

    msvcp140 dll是动态链接库文件 是一种不可执行的二进制程序文件 允许程序共享执行特殊任务所需要的代码和其他资源 程序可根据DLL文件中的指令打开 启用 查询 禁用和关闭驱动程序 很多小伙伴在使用电脑软件的时候 有一些问题会搞不明白
  • crontab中执行多条命令

    在使用crontab中执行相关命令的时候存在如下情况 可能需要先更换工作目录然后再执行相关命令 可以在crontab中按照如下格式添加定时任务 00 cd opt task python application py 通过 连接符来执行多条
  • 记录错误 pom文件中<project标签报红

    1 找到本地仓库删除刚刚下载的对应依赖 pom中删除再撤销 若红线依然存在 试试第二步 一般鼠标移到红线上都会有提示 有可能是没有版本号导致的 然后看看是哪一个依赖错了 去本地仓库删了 再重新下载 2 将自己seeting文件中的阿里云镜像
  • WebGL入门前三节(附源码和学习建议)

    在正式进入webgl之前 我想有必要简单了解一下渲染管线 毕竟它贯穿webgl学习的整个过程 渲染管线流程图 除此之外 需简单了解一下webgl着色器简单语法 向量与矩阵 常见内置变量 常见数据类型 常见修饰符 vec3 gl PointS
  • 基于opencv实现人脸识别及签到系统

    首先需要安装opencv dlib face recongnition库 opencv安装起来比较简单 其他两个库的安装请看关于face recognition的安装最简单方式 时间和我都在往前走的博客 CSDN博客 这里代码可以直接用 不
  • UTC、RTC、UNIX时间戳、localtime 理解

    UTC RTC UNIX时间戳 localtime 理解 UTC 时间 UTC是世界协调时间时 UTC 是现在全球通用的时间标准 全球各地都同意将各自的时间进行同步协调 UTC 时间是经过平均太阳时 以格林威治时间GMT为准 地轴运动修正后
  • 集合框架( ArrayList LinkedList)

    集合框架 存储多个数据 对象 使用数组 数组 存储相同数据类型一段连续的空间 限制 定长 添加 删除 统计比较麻烦 存储的是单列的值 学号 学生信息 订单号 订单详情 中文名称 英文名称 集合框架 一些接口和类 java util包 Col
  • 泛型反射,如何用泛型反射获得当前类泛型的具体类型

    有时候我们需要知道当前类所传入的泛型的具体类型而进行下一步操作 这是我们可以使用泛型反射 1 假如Dao层的接口有很多共同的方法 增删改查 我们可以对他进行提取到一个公共接口IBaseDao
  • 地质灾害监测的主要内容

    地质灾害就地质环境或地质体变化的速度而言 可分为突发性地质灾害与缓变性地质灾害两大类 其中崩塌 滑坡 泥石流是地质灾害的主要表现形式 我国是地质灾害多发的国家 全国共有较大型崩塌3000多处 滑坡2000多处 泥石流2000多处 中小规模的
  • 通过JavaAPI访问HBase

    先开始创建表 create emp001 member id address info 放入数据 put emp001 Rain id 31 put emp001 Rain info birthday 1990 05 01 put emp0
  • 九、1~8文章的阶段案例

    一 案例 现在我们来做一个相对综合一点的练习 书籍购物车 案例说明 1 在界面上以表格的形式 显示一些书籍的数据 2 在底部显示书籍的总价格 3 点击 或者 可以增加或减少书籍数量 如果为1 那么不能继续 4 点击移除按钮 可以将书籍移除
  • 最大权值闭合子图的证明详解

    前面定义部分转自这篇博客 网络流 最小割求最大权闭合子图 定义 有一个有向图 每一个点都有一个权值 可以为正或负或0 选择一个权值和最大的子图 使得每个点的后继都在子图里面 这个子图就叫最大权闭合子图 能选的子图有 4 3 4 2 4 1
  • CocosCreator ios 使用sdl库找不到arm64指令集

    关于sdl如何打包成ios库 android库的问题 之后会有相关文章介绍 现在先说一下CocosCreator在使用xcode运行过程中 会报的一个错 Undefined symbols for architecture arm64的错误
  • Android墓碑以及ANR跟踪文件路径

    ANR data anr 墓碑 data tombstones
  • Hadoop-3.2.3集群搭建

    Hadoop 3 2 3集群搭建 一 准备工作 准备三台最小化安装的Linux服务器 单节点伪集群一台虚拟机即可 hdfs配置副本数设置为1 worker只有一个 ipaddress hostname 192 168 116 10 hado