• Hadoop-3.2.3集群搭建


    Hadoop-3.2.3集群搭建

    一、准备工作

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

    ipaddresshostname
    192.168.116.10hadoop1
    192.168.116.20hadoop2
    192.168.116.30hadoop3

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

    # adduser hadoop
    # su - hadoop
    
    • 1
    • 2

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

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

    设置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
    
    • 1
    • 2
    • 3
    • 4

    验证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)
    
    • 1
    • 2
    • 3
    • 4

    二、Hadoop配置

    1、下载hadoop

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

    2、解压

     $ tar -zxvf hadoop-3.2.3.tar.gz
    
    • 1

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

     $ ls -l
    
    • 1

    如果和当前用户属主不一致修改为当前用户
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    使环境变量生效后验证

    $ source ~/.bashrc
    $ hadoop version
    
    • 1
    • 2

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

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

    几个主要配置文件包括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
    
    • 1
    • 2
    • 3
    export HADOOP_HOME=
    export JAVA_HOME=
    
    • 1
    • 2

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

    <configuration>
    
    <property>
            <name>fs.defaultFSname>
             <value>hdfs://hadoop1:9000value>
    property>
    
    <property>
            <name>hadoop.tmp.dirname>
            <value>/home/hadoop/hadoop-3.2.3value>
    property>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

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

    <configuration>
    
    <property>
            <name>dfs.namenode.http-addressname>
             <value>hadoop1:9870value>
    property>
    
    <property>
            <name>dfs.namenode.secondary.http-addressname>
             <value>hadoop1:9868value>
    property>
    
    <property>
            <name>dfs.replicationname>
             <value>3value>
    property>
    
    <property>
     <name>dfs.blocksizename>
     <value>128mvalue>
    property>
    
    <property>
            <name>dfs.permissions.enabledname>
             <value>falsevalue>
    property>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

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

    <configuration>
    <property>
            <name>mapreduce.framework.namename>
            <value>yarnvalue>
    property>
    <property>
            <name>mapreduce.admin.user.envname>
            <value>HADOOP_MAPRED_HOME=/home/hadoop/hadoop-3.2.3value>
    property>
    <property>
            <name>mapreduce.application.classpathname>
            <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*value>
    property>
    <property>
            <name>yarn.app.mapreduce.am.envname>
            <value>HADOOP_MAPRED_HOME=/home/hadoop/hadoop-3.2.3value>
    property>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    5、yarn-site.xml

    <configuration>
    <property>
            <name>yarn.nodemanager.aux-servicesname>
            <value>mapreduce_shufflevalue>
    property>
    <property>
            <name>yarn.nodemanager.aux-services.mapreduce_shuffle.classname>
            <value>org.apache.hadoop.mapred.ShuffleHandlervalue>
    property>
    <property>
            <name>yarn.resourcemanager.hostnamename>
                    <value>hadoop1value>
    property>
    <property>
            <name>yarn.nodemanager.env-whitelistname>
            <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOMEvalue>
    property>
    <property>
            <name>yarn.nodemanager.vmem-check-enabledname>
            <value>falsevalue>
    property>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

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

    hadoop1
    hadoop2
    hadoop3
    
    • 1
    • 2
    • 3

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

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

    $ scp -r ~/hadoop-3.2.3 hadoop02:~/
    $ scp -r ~/hadoop-3.2.3 hadoop03:~/
    
    • 1
    • 2

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

    $ hdfs namenode -format
    
    • 1

    启动HDFS

    $ start-dfs.sh
    
    • 1

    查看服务是否运行

    $ jps
    
    • 1

    正常情况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 /
    
    • 1
    • 2
    • 3

    测试:

     输入文件拷贝到分布式文件系统:
     创建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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    启动ResourceManager和NodeManager服务进程:

    $ start-yarn.sh
    查看
    $ jps
    
    • 1
    • 2
    • 3

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

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

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

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

    运行成功即可。

    关闭集群服务:

    $ stop-yarn.sh
    $ stop-dfs.sh
    $ mapred --daemon stop historyserver
    $ yarn --daemon stop timelineserver
    
    • 1
    • 2
    • 3
    • 4

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

    $ start-dfs.sh
    $ start-yarn.sh
    
    • 1
    • 2

    停止时先停止yarn再停止dfs

    $ stop-yarn.sh
    $ stop-dfs.sh
    
    • 1
    • 2

    HDFS 常用 shell 命令

    1. 显示当前目录结构

    # 显示当前目录结构
    hadoop fs -ls  <path>
    # 递归显示当前目录结构
    hadoop fs -ls  -R  <path>
    # 显示根目录下内容
    hadoop fs -ls  /
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2. 创建目录

    # 创建目录
    hadoop fs -mkdir  <path> 
    # 递归创建目录
    hadoop fs -mkdir -p  <path>  
    
    • 1
    • 2
    • 3
    • 4

    3. 删除操作

    # 删除文件
    hadoop fs -rm  <path>
    # 递归删除目录和文件
    hadoop fs -rm -R  <path> 
    
    • 1
    • 2
    • 3
    • 4

    4. 从本地加载文件到 HDFS

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

    5. 从 HDFS 导出文件到本地

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

    6. 查看文件内容

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

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

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

    8. 拷贝文件

    hadoop fs -cp [src] [dst]
    
    • 1

    9. 移动文件

    hadoop fs -mv [src] [dst] 
    
    • 1

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

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

    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
    
    • 1
    • 2
    • 3

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

    hadoop fs -df -h /
    
    • 1

    13. 更改文件复制因子

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

    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 ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    15. 文件检测

    hadoop fs -test - [defsz]  URI
    
    • 1

    可选选项:

    • -d:如果路径是目录,返回 0。
    • -e:如果路径存在,则返回 0。
    • -f:如果路径是文件,则返回 0。
    • -s:如果路径不为空,则返回 0。
    • -r:如果路径存在且授予读权限,则返回 0。
    • -w:如果路径存在且授予写入权限,则返回 0。
    • -z:如果文件长度为零,则返回 0。
    # 示例
    hadoop fs -test -e filename
    
    • 1
    • 2
  • 相关阅读:
    【STM32快速上手】点灯只需4步
    Java开发学习(四十五)----MyBatisPlus查询语句之映射匹配兼容性
    【函数】各种函数收集,持续更新~
    2021CCPC威海【个人题解ADGJM】
    信息系统集成专业技术知识
    Linux常用命令
    【SQL Server】入门教程-基础篇(完结)
    【matlab深度学习工具箱】classificationLayer参数详解
    2024华为OD机试真题- 计算三叉搜索树的高度-(C++/Python)-C卷D卷-100分
    [YOLOv7]基于YOLOv7的绝缘子缺陷检测系统(源码&部署教程&数据集)
  • 原文地址:https://blog.csdn.net/qq_63844528/article/details/130911039