Hadoop(一)概述与配置安装

Hadoop 集群的搭建步骤 大数据集群搭建的一些步骤 阅读详情

学习一个框架,主要关注这个框架是什么、干什么、原理、怎么用、实地使用场景中可能存在的问题、原因及优化。

大数据开发面试指南

一.Hadoop学习要点

Hadoop 体系是我们学习大数据框架的基石,尤其是 MapReduce、HDFS、Yarn 三驾马车基本垫定了整个数据方向的发展道路。也是后面我们学习其他框架的基础,关于 Hadoop 本身我们主要应该掌握:

  • HDFS架构理解(基础)
  • HDFS源码/工作原理(高级)
  • MapReduce架构理解(基础)
  • MapReduce源码/原理/Shuffle原理(高级)
  • MapReduce二次排序(编程,必选)
  • YARN架构理解(基础)
  • YARN源码/工作原理(高级)

其主要是三方面内容:

1)HDFS

  • 十分熟悉 HDFS 的架构图和读写流程
  • 十分熟悉 HDFS 的配置
  • 熟悉 DataNode 和 NameNode 的作用
  • NameNode 的 HA 搭建和配置,Fsimage 和 Edit Journal 的作用的场景
  • HDFS 操作文件的常用命令
  • HDFS 的安全模式

2)MapReduce

  • 掌握 MapReduce 的工作原理
  • 能用 MapReduce 手写代码实现简单的 WordCount 或者 TopN 算法
  • 掌握 MapReduce Combiner 和 Partitioner的作用
  • 熟悉 Hadoop 集群的搭建过程,并且能解决常见的错误
  • 熟悉 Hadoop 集群的扩容过程和常见的坑
  • 如何解决 MapReduce 的数据倾斜
  • Shuffle 原理和减少 Shuffle 的方法

3)Yarn

  • Yarn 的产生背景和架构
  • Yarn 中的角色划分和各自的作用
  • Yarn 的配置和常用的资源调度策略
  • Yarn 进行一次任务资源调度的过程

二.Hadoop基础概述


关于大数据

什么是大数据?多大算是大数据?其有什么特点?

大数据(BigData) :指无法在一定时间范围内用常规软件工具进行捕捉、管理
和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程
优化能力
的海量、高增长率和多样化的信息资产。

按顺序给出数据存储单位: bit.、Byte、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB。

大数据的特点:4V

  • volume 大量
  • velocity 高速
  • variety 多样
  • value 低价值密度

大数据生态体系图

关于Hadoop

Hadoop三大发行版本:Apache、Cloudera、Hortonworks。

  • Apache版本最原始(最基础)的版本,对于入门学习最好(手动挡)。
  • Cloudera内部集成了很多大数据框架。对应产品CDH(自动挡)。
  • Hortonworks文档较好。对应产品HDP。

Hadoop的优势:4高

  • 1)高可靠性:多个数据副本
  • 2)高扩展性:节点方便扩展
  • 3)高效性:MapReduce思想下的并行工作,加快任务处理速度
  • 4)高容错性:能自动将失败任务重新分配

Hadoop官方网站:http://hadoop.apache.org/

Hadoop组成

在这里插入图片描述

  • 1)Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统。
  • 2)Hadoop MapReduce:一个分布式的离线并行计算框架。
  • 3)Hadoop YARN:作业调度与集群资源管理的框架。
  • 4)Hadoop Common:支持其他模块的工具模块。

Hadoop2.x 之后,将之前的MapReduce部分分为MapReduce与YARN两个部分,其目的是为了解耦。

解耦的一个好处就是可以实现MapReduce的可插拔,从而更加方便地替换计算框架。
在这里插入图片描述

MapReduce将计算过程分为两个阶段:Map和Reduce

  • 1)Map阶段并行处理输入数据
  • 2)Reduce阶段对Map结果进行汇总
    在这里插入图片描述
    YARN架构:
  • 1)ResourceManager(rm):处理客户端请求、启动/监控ApplicationMaster、监控NodeManager、资源分配与调度;
  • 2)NodeManager(nm):单个节点上的资源管理、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令;
  • 3)ApplicationMaster:数据切分、为应用程序申请资源,并分配给内部任务、任务监控与容错。
  • 4)Container:对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息。

在这里插入图片描述

三.Hadoop实践操作*


1. 运行环境搭建

Hadoop的运行环境安装主要包括三大部分:基础的集群操作系统的准备、具体的运行环境安装——包括JDK和Hadoop两个部分。

1)虚拟机环境准备

①单台最小安装的虚拟机:内存4G,硬盘50G,并安装必要环境:

sudo yum install -y epel-release
sudo yum install -y psmisc nc net-tools rsync vim lrzsz ntp libzstd openssl-static tree iotop git

如果有需要,修改YUM源为国内镜像

②修改虚拟机的静态IP

sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33

③修改主机名

sudo hostnamectl --static set-hostname hadoop101

④配置主机名称映射,打开/etc/hosts

sudo vim /etc/hosts

⑤修改windows的hosts文件

  • 路径:C:\Windows\System32\drivers\etc

⑥关闭虚拟机防火墙

sudo systemctl stop firewalld
sudo systemctl disable firewalld

⑦创建新用户,并重启

sudo useradd zxy
sudo passwd zxy

reboot

⑧配置atguigu用户具有root权限

visudo

修改/etc/sudoers文件,找到下面一行(91行),在root下面添加一行,如下所示:

## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
atguigu   ALL=(ALL)     ALL

⑨在/opt目录下创建下创建module、software文件夹;并修改module、software文件夹的所有者

sudo mkdir module
sudo mkdir software

sudo mkdir /opt/module /opt/software
sudo chown zxy:zxy /opt/module /opt/software

⑩关机照快照,再克隆两台虚拟机

  • 修改其IP,主机名

2)安装JDK

①卸载现有JDK

rpm -qa | grep -i java | xargs -n1 sudo rpm -e –nodeps
  • grep -i 或 --ignore-case : 忽略字符大小写的差别
  • xargs是给命令传递参数的一个过滤器:
    • -n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的

②将JDK导入到opt目录下面的software文件夹下

③解压JDK到/opt/module目录下

tar -zxvf /opt/software/jdk-8u212-linux-x64.tar.gz -C /opt/module/

④配置JDK环境变量

  • 新建/etc/profile.d/my_env.sh文件:一般用户对该文件夹只有只读权限,所以需要sudo
sudo vim /etc/profile.d/my_env.sh
  • 在my_env.sh文件中添加如下内容
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
  • 保存后退出
  • 重启xshell窗口,让环境变量生效,或者运行命令
source /etc/profile.d/my_env.sh

⑤测试JDK是否安装成功

java -version

如果能看到版本信息,则Java正常安装;否则试着重启。

3)安装Hadoop

Hadoop下载地址:

  • https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3

①进入到Hadoop安装包的路径下,解压安装文件到/opt/module下面

[zxy@hadoop101 ~]$ cd /opt/software/
[zxy@hadoop101 software]$ tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
[zxy@hadoop101 software]$  ls /opt/module/
hadoop-3.1.3

②添加Hadoop环境变量,并执行source命令

[zxy@hadoop101 hadoop-3.1.3]$ sudo vim /etc/profile.d/my_env.sh

在profile文件末尾添加JDK路径:(shift+g)

##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

③测试是否安装成功

[zxy@hadoop101 hadoop-3.1.3]$ source /etc/profile.d/my_env.sh
[zxy@hadoop101 hadoop-3.1.3]$ hadoop version
Hadoop 3.1.3

Hadoop目录结构

[zxy@hadoop102 hadoop-3.1.3]$ ll
总用量 180
drwxr-xr-x. 2 zxy zxy    236 4月   2 15:50 bin
drwxrwxr-x. 4 zxy zxy     30 3月  23 10:16 data
drwxr-xr-x. 3 zxy zxy     20 9月  12 2019 etc
drwxr-xr-x. 2 zxy zxy    106 9月  12 2019 include
drwxr-xr-x. 3 zxy zxy     20 9月  12 2019 lib
drwxr-xr-x. 4 zxy zxy    288 9月  12 2019 libexec
-rw-rw-r--. 1 zxy zxy 147145 9月   4 2019 LICENSE.txt
drwxrwxr-x. 3 zxy zxy   4096 4月   2 15:46 logs
-rw-rw-r--. 1 zxy zxy  21867 9月   4 2019 NOTICE.txt
-rw-rw-r--. 1 zxy zxy   1366 9月   4 2019 README.txt
drwxr-xr-x. 3 zxy zxy   4096 9月  12 2019 sbin
drwxr-xr-x. 4 zxy zxy     31 9月  12 2019 share
  • 1)bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本
  • 2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
  • 3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
  • 4)sbin目录:存放启动或停止Hadoop相关服务的脚本
  • 5)share目录:存放Hadoop的依赖jar包、文档、和官方案例

2.Hadoop运行模式

Hadoop运行模式:

  • 1)本地模式(默认模式):不需要启用单独进程,直接可以运行,测试和开发时使用。
  • 2)伪分布式模式:等同于完全分布式,只有一个节点。
  • 3)完全分布式模式:多个节点一起运行

3.完全分布式部署Hadoop集群

完全分布式模式配置流程:

  • 1)准备3台客户机(关闭防火墙、静态ip、主机名称、hosts文件)
  • 2)安装JDK,配置环境变量
  • 3)安装Hadoop,配置环境变量
  • 4)配置集群
  • 5)单点启动
  • 6)配置ssh
  • 7)群起并测试集群

前三步配置完毕,现在需要后四步的操作。

4)准备工作

现在已经在第一台机器上安装完毕JDK与Hadoop,现在需要在另两台机器上配置同样的环境。

①使用rsync远程同步工具,编辑集群分发脚本

需求:

  • 1)循环复制文件到所有节点的相同目录下

  • 2)需求分析:

    • a)rsync命令原始拷贝:
    rsync -av /opt/module root@hadoop103:/opt/
    -a	归档拷贝
    -v	显示复制过程
    
    • b)期望脚本:
      xsync要同步的文件名称
  • 3)脚本实现

    • a)在/home/zxy目录下创建xsync文件
    cd /home/zxy
    vim xsync
    

在xsync文件中编写如下代码:

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
  echo Not Enough Arguement!
  exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
  echo ====================  $host  ====================
  #3. 遍历所有目录,挨个发送
  for file in $@
  do
    #4 判断文件是否存在
    if [ -e $file ]
    then
      #5. 获取父目录
      pdir=$(cd -P $(dirname $file); pwd)
      #6. 获取当前文件的名称
      fname=$(basename $file)
      ssh $host "mkdir -p $pdir"
      rsync -av $pdir/$fname $host:$pdir
    else
      echo $file does not exists!
    fi
  done
done
  • b)修改脚本 xsync 具有执行权限
chmod +x xsync
  • c)将脚本移动到/bin中,以便全局调用
sudo mv xsync /bin/
  • d)分发xsync脚本
sudo xsync /bin/xsync
②配置SSH免密登陆

基本语法:

ssh 另一台电脑的ip地址

1)生成公钥和私钥:

ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

2)将公钥拷贝到要免密登录的目标机器上

ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104

注意:

  • 还需要在hadoop102上采用root账号,配置一下无密登录到hadoop102、hadoop103、hadoop104;
  • 还需要在hadoop103上采用普通账户配置一下无密登录到hadoop102、hadoop103、hadoop104服务器上。

3).ssh文件夹下(~/.ssh)的文件功能解释

文件名内容
known_hosts记录ssh访问过计算机的公钥(public key)
id_rsa生成的私钥
id_rsa.pub生成的公钥
authorized_keys存放授权过的无密登录服务器公钥
③编辑jpsall脚本
  • vim jpsall

    #!/bin/bash
    for i in hadoop102 hadoop103 hadoop104
    do
    	echo "====================    $i    ========================"
    	ssh $i "jps $@" | grep -v Jps
    done
    
  • 增加执行权限:+x
    chmod +x jpsall

  • 放到/bin目录下
    sudo mv jpsall /bin

  • 分发该脚本
    xsync /bin/jpsall

5)配置集群

①最小集群部署规划

HDFS集群最低组成:

  • NameNode × 1
  • SecondaryNameNode × 1
  • DataNode × 3

YARN集群最低组成:

  • ResourceManager ×1
  • NodeManager × 3 (与DataNode配套)

其中NameNode不能与SecondaryNameNode 安装在同一服务器上,同时ResourceManager 也很消耗内存所以也不能与两者安装在同一设备上。所以最小的Hadoop分布式集群部署规划可以是3台服务器,具体的节点配置如下:

组件hadoop102hadoop103hadoop104
HDFSNameNode DataNodeDataNodeSecondaryNameNode DataNode
YARNNodeManagerResourceManager NodeManagerNodeManager
②修改集群配置文件

配置文件目录地址:$HADOOP_HOME/etc/hadoop

Hadoop集群的配置文件主要包括:

  • 核心配置文件:core-site.xml
  • HDFS配置文件:hdfs-site.xml
  • YARN配置文件:yarn-site.xml
  • MapReduce配置文件:mapred-site.xml

官方文档:https://hadoop.apache.org/docs/r3.2.1/

a)核心配置文件:core-site.xml

官方文档:https://hadoop.apache.org/docs/r3.2.1/hadoop-project-dist/hadoop-common/core-default.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!--1.必备配置-->
	<!-- 指定HDFS中NameNode的地址 -->
	<property>
	   <name>fs.defaultFS</name>
       <value>hdfs://hadoop102:8020</value>
	</property>
	<!-- 指定Hadoop运行时产生文件的存储目录 -->
	<property>
		<!-- 该属性在hadoopjar包的配置文件中会被使用到-->
        <name>hadoop.data.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
	</property>
	
	<!-- 2.代理权限设置 -->
    <property>
    	<!-- 配置该superUser:zxy允许通过代理访问的主机节点 -->
        <name>hadoop.proxyuser.zxy.hosts</name>
        <value>*</value>
    </property>
    <property>
    	<!-- 配置该superUser允许代理的用户所属组 -->
        <name>hadoop.proxyuser.zxy.groups</name>
        <value>*</value>
	</property>
	
	<!--3.提供web端口的HDFS文件操作 -->
	<property>
	    <name>hadoop.http.staticuser.user</name>
	    <value>zxy</value>
	</property>
</configuration>

服务端需要在NameNode和ResourceManager的core- site.xmlI中进行代理权限相关配置。对于每一 个superUser用户,配置参数:

配置说明
hadoop.proxyuser.$superuser.hosts配置该superUser允许通过代理访问的主机节点
nadoop.proxyuser.$superuser.groups配置该superUser允许代理的用户所属组
hadoop.proxyuser.$superuser.users配置该superUser允许代理的用户

对于每个superUser用户,hosts必须进行配置,而groups和users至少需要配置一 个。

这几个配置项的<value>值都可以使用*来表示允许所有的主机/用户组/用户。

b)HDFS配置文件:hdfs-site.xml

官方文档:https://hadoop.apache.org/docs/r3.2.1/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
  <!-- 1.必配:指定Hadoop辅助名称节点主机配置:SecondaryNameNode地址 -->
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop104:9868</value>
  </property>

  <!-- 2.配置各节点namenode\datanode的数据存储路径 -->
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file://${hadoop.data.dir}/name</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file://${hadoop.data.dir}/data</value>
  </property>
  <property>
    <name>dfs.namenode.checkpoint.dir</name>
    <value>file://${hadoop.data.dir}/namesecondary</value>
  </property>
</configuration>
c)YARN配置文件:yarn-site.xml

官方文档:https://hadoop.apache.org/docs/r3.2.1/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

	<!-- 1.必备配置: -->
	<!-- Reducer获取数据的方式 -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
	<!-- 指定YARN的ResourceManager的地址 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</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_MAPRED_HOME</value>
    </property>
    
	<!-- 2.配置日志的聚集 -->
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property>  
        <name>yarn.log.server.url</name>  
        <value>http://hadoop102:19888/jobhistory/logs</value>  
    </property>
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>
    
    <!--3.其他配置-->
    <!--The minimum allocation for every container request at the RM in MBs.-->
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
    </property>
    <!--The maximum allocation for every container request at the RM in MBs.-->
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>4096</value>
    </property>
    <!--可以分配给容器的物理内存总量-->
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>4096</value>
    </property>
    <!--是否对容器实施物理内存限制-->
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value>
    </property>
	<!-- 是否对容器实施虚拟内存限制 -->
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
</configuration>

配置日志聚集:

  • 日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上
  • 日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试
d)MapReduce配置文件:mapred-site.xml

官方文档:https://hadoop.apache.org/docs/r3.2.1/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
  <!-- 1.必备:配置执行MapReduce作业的运行时框架 -->
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  
  <!-- 2.配置历史服务器 -->
  <!-- 历史服务器端地址 -->
  <property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop102:10020</value>
  </property>
  <!-- 历史服务器web端地址 -->
  <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop102:19888</value>
  </property>
</configuration>

配置历史服务器

  • 作用:查看程序的历史运行情况
③分发安装文件到其他集群

分发JDK、Hadoop安装目录,以及配置好的环境变量文件:

[zxy@hadoop102 ~]$ xsync /opt/module/
[zxy@hadoop102 ~]$ sudo xsync /etc/profile.d/my_env.sh

6)单点启动

1)如果集群是第一次启动,需要格式化NameNode

[zxy@hadoop102 ~]$ hdfs namenode -format

2)在hadoop102上:启动\关闭NameNode

[zxy@hadoop102 ~]$ hdfs --daemon start namenode
[zxy@hadoop102 ~]$ jps
1353 NameNode
[zxy@hadoop102 ~]$ hdfs --daemon stop namenode

完成后执行jps命令(java process 查看java进程),看到如下结果(进程号可能不同):1353 NameNode

3)在hadoop102、hadoop103以及hadoop104上执行如下命令(三台都要执行)

[zxy@hadoop102 ~]$ hdfs --daemon start datanode

7)群起集群

①配置workers

配置群起文件workes,并同步到所有节点配置文件:

[zxy@hadoop102 ~]$ vim $HADOOP_HOME/etc/hadoop/workers
hadoop102
hadoop103
hadoop104
[zxy@hadoop102 ~]$ xsync $HADOOP_HOME/hadoop-3.1.3/etc/hadoop/workers

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

②启动集群

1)如果集群是第一次启动,需要在hadoop102节点格式化NameNode

[zxy@hadoop102 ~]$ hdfs namenode -format

注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除/opt//opt/module/hadoop-3.1.3/ data和log文件夹数据,否则会导致启动失败。

2)启动HDFS

[zxy@hadoop102 ~]$ start-dfs.sh

3)在配置了ResourceManager的节点上启动YARN(hadoop103)

[zxy@hadoop103 ~]$ start-yarn.sh

3.集群启动/停止方式总结

1.各个服务组件逐一启动/停止

1)分别启动/停止HDFS组件

hdfs –daemon start/stop namenode/datanode/secondarynamenode

2)启动/停止YARN

yarn --daemon start/stop  resourcemanager/nodemanager

3)启动/停止HistoryServer

mapred --daemon start/stop historyserver

2.各个模块分开启动/停止(配置ssh是前提)常用

1)整体启动/停止HDFS

start-dfs.sh/stop-dfs.sh

2)整体启动/停止YARN

start-yarn.sh/stop-yarn.sh

4.Web端查看Hadoop运行情况

查看网络端口占用情况:

netstat –nltp
netstat –nltp | grep 进程号

默认web端口号:

  • dfs.namenode.http-address—${hdfs.namenode.hostname}:9870
  • yarn.resourcemanager.webapp.address—${yarn.resourcemanager.hostname}:8088
  • mapreduce.jobhistory.webapp.address——0.0.0.0:19888

1)HDFS:
HDFS

2)YARN:
YARN

3)JobHistory:
jobhistory

四.常见问题

DataNode和NameNode进程同时只能工作一个、或者是搭完集群,格式化成功但启动失败,重新格式化后启动又失败
在这里插入图片描述

五.虚拟机系统配置脚本

虚拟机系统配置准备工作包括:

  1. 安装必要系统软件
  2. 开启网络
  3. 关闭防火墙
  4. 设置主机编号
  5. 配置IP地址
  6. 添加hosts文件
  7. 添加新用户
  8. 添加sudoer权限
  9. 创建软件安装文件夹
  10. 重启
#!/bin/bash
#0. 获取必要变量
read -p '请输入这台机器的编号:' start
read -p '请输入你要设置的用户名:' username
read -p '请输入密码:' password

echo "设置进行中,完成后会自动重启..."
#1. 安装必要软件
yum install -y epel-release >/dev/null 2>&1
yum install -y psmisc nc net-tools rsync vim lrzsz ntp libzstd openssl-static >/dev/null 2>&1

#2. 开启网络
systemctl start network >/dev/null 2>&1

#3. 关闭防火墙
systemctl stop firewalld >/dev/null 2>&1
systemctl disable firewalld >/dev/null 2>&1

#3. 获取当前IP网段
LAN=$(ifconfig | grep broadcast | cut -d . -f 3)

#4. 设置主机编号
hostnamectl --static set-hostname hadoop$start

#5. 配置IP地址
cat > /etc/sysconfig/network-scripts/ifcfg-ens33 <<EOF
TYPE="Ethernet"
BOOTPROTO="static"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.$LAN.$start"
PREFIX="24"
GATEWAY="192.168.$LAN.2"
DNS1="192.168.$LAN.2"
EOF

#6. 添加hosts文件
for ((i=$start;i<$[$start+10];i++))
do
    echo "192.168.$LAN.$i hadoop$i" >> /etc/hosts
done

#7. 添加新用户
userdel -r $username >/dev/null 2>&1
useradd $username >/dev/null 2>&1
echo $password | passwd $username --stdin >/dev/null 2>&1

#8. 添加sudoer权限
sed -i "/^root	ALL/a$username  ALL=(ALL)     NOPASSWD:ALL" /etc/sudoers

#9. 创建文件夹
mkdir -p /opt/module /opt/software
chown -R $username:$username /opt/module /opt/software

reboot

参考:

[实验]Hadoop集群安装与配置 8、SSH免密登录测试,在hadoop01节点中使用命令 ssh hadoop02,在hadoop02节点中使用命令 ssh hadoop03,在hadoop03节点中使用命令 ssh hadoop01,或直接在hadoop01节点中使用,效果如下。4、和JDK一样,我们安装完成后都需要配置环境变量,使用命令vi /etc/profile进入到该文件后,依旧在最后一行进行配置,参数如下(以下两行参数一定要把地址写对,如果你的地址是自己修改的,需要把第一行中的地址写为你修改的地址)修改完成后保存退出。 阅读详情

相关推荐

【Hadoop入门一】Windows下安装和配置Hadoop

本文介绍如何在单机环境下安装配置Hadoop,并运行Word Count示例。 前提 确认已经安装好Java环境,并配置好环境变量。 一、下载Hadoop 1. 去官网下载Hadoop binary,我这里下载的是2.7.5版本,下载完成后解压hadoop-2.7.5.tar.gz到指定的hadoop安装目录。 2. 原版的Hadoop不支持Windows系统,需要搜索下载Hadoop对应版本的Windows运行包(可以到https://github.com/steveloughran/winut

2580

hadoop2.7.2学习笔记08-代理用户(超级用户以其他用户的名义执行操作)

1、场景 假设一个超级用户super想要以一个名为joe的用户的名义向hdfs提交作业。super使用kerberos认证,但joe并没有。这要求joe可以使用超级用户认证过了的连接,来操作namenode和job tracker。 这个场景在Apache Oozie中可能会发生。 示例代码: ... //Create ugi for joe. The login user i

qq_34617750的博客 3462

基于NXP1778的CAN自动波特率检测

一、概念 NXP1778芯片内部自带一个CAN控制器。CAN模块由两部分组成:控制器和验收滤波器。所有的寄存器和RAM都以32位字宽度来访问。 CAN自动波特率检测主要用于以一种CAN的转换的产品中。产品中CAN部分的波特率以前都是通过网页中修改然后配置下去的,依据实际情况的考虑,如果CAN部分的波特率能够根据客户设备的改变而自动改变,将会增加其灵活性。   二、原理 根据CAN控制器的

菜鸟的痕迹专栏 5273

Hadoop环境安装

hadoop安装

qq_42722387的博客 2049

手把手教你用Python 3.11和Node.js 18在Windows 11上搭建Dify开发环境

本文提供了一份详尽的Windows 11本地Dify开发环境搭建指南。文章手把手教你完成从Python 3.11、Node.js 18的安装配置,到PostgreSQL、Redis数据库服务的部署,再到前后端服务的启动与联调的全过程,并包含常见问题排查与效能优化建议,旨在帮助开发者构建一个稳定、可调试的Dify本地开发环境。

fire9的博客 645

GAN模型中的常见变体有哪些,如DCGAN、WGAN和CGAN等?

生成对抗网络(GAN)是一种强大的深度学习模型,它由生成器和判别器两个网络组成,通过对抗训练的方式实现生成数据的能力。随着研究的发展,出现了许多GAN的变体,每个变体都有其独特的改进和特点。

huidhsu的博客 2262

centos7虚拟机镜像地址出问题了

yum命令问题处理

2401_84376227的博客 1361

以LAN8720A为例的以太网硬件设计方案

输入时钟(XTAL1/CLKIN,XTAL2):推荐外加25MHz(性价比较高)晶振为PHY芯片提供时钟,PHY芯片内部PLL将其倍频为50MHz来使用,亦可使用直接使用50MHz晶振。三位MODE通过高低电平组合分别对应以上8种模式 ,包含10M半双工,10M全双工,100M半双工,100M全双工,是否启用自协商协议,CRS是否有效等。VDDCR:1.2V电源,可由芯片内部稳压电源提供,亦可由外部电源提供,由外部电源提供可降低芯片功耗。REF_CLK:参考时钟,由MAC或外部时钟晶振向PHY芯片提供。

weixin_46154042的博客 5885

VMware创建虚拟机并分配地址

修改虚拟机设置 修改网卡配置 vi /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6...

Aizen_Sousuke的博客 1729

数学建模学习(120):使用Python实现基于AHP的供应商选择分析

使用Python实现基于AHP的供应商选择分析

全栈川川 912

记录一次Spring Framework 漏洞修复的过程

摘要:针对Spring Boot 2.6.13项目在阿里云漏洞扫描中发现的Spring Framework目录遍历漏洞(CVE-2024-38819),首先分析了漏洞成因,确认5.3.23版本存在风险。解决方案包括升级Spring Boot至2.7.18(对应Spring Framework 5.3.41)或6.0+版本,但后者需JDK17支持。临时方案通过配置HttpFirewall限制特殊字符,最终借助阿里云防护服务暂时解决问题。建议长期解决方案仍需升级至安全版本(Spring Boot 6.1.14或

极客栈 1491

hadoop classpath_Hadoop基础HDFS安装配置(一)预备知识和概述

由于Hadoop运行在分布式环境下,与单机版软件安装过程相比要复杂很多。初学者如果手动安装配置Hadoop,一般情况都不顺利,甚至很混乱。如果直接使用带界面的自动安装配置版本如cloudera,很难了解到底层的工作机制。考虑到大数据专业的特殊性,毕业生将来必须要具备搭建集群参数调优的能力,建议大数据专业的学生应该从手动安装配置学起。本文和后续博文尝试归纳一套方便记忆并且行之有效的大数据组...

weixin_40003451的博客 530

基于单片机设计的智能消防排烟窗控制系统_422

随着城市化进程的不断加快,高层建筑、大型商业综合体以及地下空间的数量迅速增加,建筑内部结构日趋复杂,一旦发生火灾,烟雾和有毒气体往往比明火更具威胁性。大量研究表明,在火灾事故中,人员伤亡的主要原因并非直接烧伤,而是由于吸入烟雾及一氧化碳等有毒气体导致窒息。因此,如何在火灾初期快速排烟、降低有害气体浓度,并及时进行预警,成为现代消防系统设计中的关键问题。传统的消防排烟系统多依赖人工操作或简单的联动控制方式,存在响应滞后、自动化程度低、信息反馈不及时等问题。在实际应用中,当火灾发生时,如果不能第一时间开启排烟窗

399

hadoop各个端口_Hadoop基础HDFS安装配置(一)预备知识和概述

由于Hadoop运行在分布式环境下,与单机版软件安装过程相比要复杂很多。初学者如果手动安装配置Hadoop,一般情况都不顺利,甚至很混乱。如果直接使用带界面的自动安装配置版本如cloudera,很难了解到底层的工作机制。考虑到大数据专业的特殊性,毕业生将来必须要具备搭建集群参数调优的能力,建议大数据专业的学生应该从手动安装配置学起。本文和后续博文尝试归纳一套方便记忆并且行之有效的大数据组...

weixin_34321609的博客 628

YOLOv13:目标检测的全面攻略与实战指南

本文是关于 YOLOv13 的全攻略文章。先回顾 YOLO 系列发展,点明 YOLOv13 在该系列中的创新地位,阐述其基于 HyperACE、FullPAD 和轻量级卷积替换等技术的独特优势。深入剖析各核心技术原理,通过与其他版本及实际场景对比展现其性能优势。介绍项目结构与使用方式,分享数据增强、锚框优化等实用技巧,并列举安防监控、自动驾驶等领域应用案例。最后总结 YOLOv13 价值,展望目标检测技术未来发展趋势,为读者提供全面的 YOLOv13 学习与实践指导。

邓邓子的博客 3434

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Hadoop安装与配置

第一步:装虚拟机 1.新建虚拟机 2.典型,下一步,选择你的iso镜像文件,给你的虚拟机命名,选择安装文件位置 3.选择一下磁盘大小,最后点完成。 安装完成之后和跟下面的步骤来 当然你也可以选择中文,需要选择中文就在下面搜索栏中搜ch选择简体中文即可。 选择自动分区 root密码设置123456,尽量设置简单的,为了方便后面的步骤。 user用户可以创建也可以不创建,如果是gui图形界面就必须要创建了。 最后点击重启 上面的步骤在slave...

qq_52289797的博客 2万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Hadoop 安装与配置

hadoop在Ubantu中的安装与配置

weixin_43571612的博客 5万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

[hadoop全分布部署]安装Hadoop、配置Hadoop 配置文件①

安装Hadoop、配置Hadoop 配置文件 一、配置hadoop-env.sh文件 二、配置 hdfs-site.xml 文件参数

m0_57781407的博客 2万+

实验一 Hadoop安装与配置

Hadoop安装与配置 一、实验目的:Hadoop安装与配置 二、实验的步骤与方法 1、下载安装VMware 2、安装CentOs系统 ①、双击打开VMware,建立新的虚拟机 ②、选择典型按安装步骤一步步进行 ③、设置自己的虚拟机名称,选择安装位置 ④、设备选择“新CD/DVD”,连接选择使用ISO映像文件,点击浏览找到自己的ISO映像文件 ⑤、开启此虚拟机 3、安装CRT,并建立连接 4、...

weixin_44722764的博客 5855

Hadoop概述与安装配置

大数据介绍 大数据的由来 大数据 随着计算机技术的发展,互联网的普及,信息的积累已经到了一个非常庞大的地步,信息的增长也在不断的加快,随着互联网、物联网建设的加快,信息更是爆炸是增长,收集、检索、统计这些信息越发困难,必须使用新的技术来解决这些问题 什么是大数据 大数据的定义 大数据指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,需要新处理模式才能具有更强的决策力、洞察发...

JReno的博客 1万+

Hadoop(一)Hadoop概述

Hadoop(一)Hadoop概述

ks_1998的博客 2万+

VMware上安装Hadoop安装配置与教程小白必看

VMware上安装Hdoop安装配置与教程小白必看安装Hdoop前准备工作1 进入BIOS模式开启虚拟化2 安装虚拟机VMware并安装ubuntuHadoop安装与配置启动终端插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 安装Hdoop前准备工作 本文主要记录踩过无数坑的Hadoop的

Monster0827的博客 1万+

一、 配置安装hadoop环境

~ 代表的是用户的主文件夹,即 “/home/用户名” 这个目录,如你的用户名为 hadoop,则 ~ 就代表 “/home/hadoop/”进入/opt/hadoop-3.2.2/share/hadoop/mapreduce文件夹运行词频统计命令。则修改/opt/hadoop-3.2.2/etc/hadoop/ hadoop-env.sh。进入/opt/hadoop-3.2.2/etc/hadoop目录,编辑yarn-env.sh。表示执行用户身份错误,修改/etc/profile文件,增加以下配置。

m0_66115674的博客 3691

Ubuntu上Hadoop的安装与配置

一、Hadoop安装前配置 1.创建hadoop用户,设置密码并配置管理员权限 使用命令 sudo useradd -m hadoop -s /bin/bash 创建hadoop用户,并使用/bin/bash作为shell,接着使用命令sudo passwd hadoop来为hadoop用户设置密码,再使用命令 sudo adduser hadoop sudo 为hadoop用户增加管理员权限...

Pinyk的博客 2957

Hadoop核心组件之HDFS的安装与配置

教程目录 0x00 教程内容 0x01 Hadoop的获取 1. 官网下载 2. 添加微信:shaonaiyi888 3. 关注公众号:邵奈一 0x02 上传安装包到集群 1. 上传安装包到虚拟机 0x02 安装与配置Hadoop 1. 解压Hadoop 2. 配置Hadoop 3. 同步Hadoop到slave1、slave2 4. 校验HDFS 0x03 简便配置 1. 环境变量配置 2. 域名映射配置 0xFF 总结

邵奈一的博客 8663
上一篇: JavaEE—1.Maven[未完]
下一篇: 如何查看框架的运行日志
PassionZheng
博客等级 码龄11年 110粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值