Haoop集群的搭建(小白教学)

news/2024/11/29 21:39:27/

       搭建hadoop集群我们必须拥有自己的虚拟机,下列我会给大家奉上超详细的集群搭建以及我在搭建的时候碰到的问题以及对应解决办法,正所谓自己走过的错路是曲折的,也是防止大家做弯路,不仅浪费时间还心态爆炸,下面带走入hadoop集群搭建。

1.下载VMware

这里给大家提供一个下载Vmware虚拟机的网站:

VMware - Delivering a Digital Foundation For Businesses

  • 进去之后点击产品-产品-更多产品-搜索work
  •  对应的系统根据自己的电脑进行选择(下载后就是傻瓜式安装,不多做解释)
  • VM密钥可在网上自行查找

 2.下载Centos7系统

阿里云镜像下载地址:centos-7-isos-x86_64安装包下载_开源镜像站-阿里云 (aliyun.com)

环境的配置根据自己的电脑的配置进行选择(虚拟机最好分50g内存)

3.更改ip地址

一共有三处需要更改ip地址

一、改变VM中的ip地址

 

二、改变windows中的ip地址

 三、改变hadoop100ip地址

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

BOOTPROTO="static"

IPADDR=192.168.10.100

GATEWAY=192.168.10.2

DNS1=192.168.10.2

192.168.10.100 hadoop100

192.168.10.101 hadoop101

192.168.10.102 hadoop102

192.168.10.103 hadoop103

192.168.10.104 hadoop104

192.168.10.105 hadoop105

192.168.10.106 hadoop106

192.168.10.107 hadoop107

192.168.10.108 hadoop108

C:\Windows\System32\drivers\etc

将上述ip地址加入到hosts中

如果w10可能会出现无法在文件中进行添加,w10对权限这方面把控的比较严格,所以可以将文件复制一份在桌面上,然后在添加后在放进原文件夹中

4.关闭防火墙以及其他操作

1.yum  install -y epel-release  //类似于安装了一个仓库2.systemctl stop firewalld  //关闭当前防火墙3.systemctl  disable  firewalld.service   //关闭开机时的防火墙4.vim /etc/suduers

 5.卸载虚拟机自带的jdk

rpm -qa | grep -i java  | xargs -n1 rpm -e --nodeps

6.下载、解压hadoop、jdk 配置linux中的环境

Hadoop镜像:Index of /apache/hadoop/common (tsinghua.edu.cn)

注意:hadoop版本最好下不易过高的,因为是在windows环境中如果运行hdfs等,所需要的hadoop.dll 不太好找,以至于心态崩溃。

jdk:百度云下载:

链接:百度网盘 请输入提取码 提取码:cbw4

下载后通过Xftp软件将jar包传到linux下的 /opt/software中,

vim  /etc/profile.d/my_env.sh

解压并安装jdk:

1.tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/2.cd /etc/profile.d/   3.sudo vim my_env.sh
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin4.source /etc/profile

解压并安装hadoop:

1.tar -zxvf hadoop-3.3.1.tar.gz -C /opt/module/ 2.2.cd /etc/profile.d/ 3.sudo vim my_env.sh
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.3.1export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin4.source /etc/profile

 6.完全分布式运行模式

1.scp:可以实现服务器与服务器之间的数据拷贝

拷贝:
scp     -r      $pdir/$fname    $user@$host:$pdir/$fname 
命令     递归  要拷贝的文件夹路径/名称   目的地用户@主机:目的地路径/名称同步:
rsync     -av     $pdir/$fname  $user@$host:$pdir/$fname 
命令     递归  要拷贝的文件夹路径/名称   目的地用户@主机:目的地路径/名称

但是我们在这里为了方便写了一个shell脚本以便于虚拟机进行同步数据

#!/bin/bash
#1.判断参数个数
if [ $# -lt 1 ]
thenecho Not Enough Arguement!exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
doecho ============  $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:$pdirelse echo  $file does not exists!fidone
done

可以在~目录下创建一个bin的文件夹,以便于我们后期写的shell脚本的存储位置

创建一个文件写入脚本sxync,然后输入

chmod 999 sxync

使得脚本生效

7.ssh无密登录

生成公钥和私钥:

[lzw@hadoop102 .ssh]$ pwd
/home/atguigu/.ssh
[lzw@hadoop102 .ssh]$ ssh-keygen -t rsa
三次回车就会出现公钥(id_rsa)和私钥(id_rsa.pub)

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

[lzw@hadoop102 .ssh]$ ssh-copy-id hadoop102
[lzw@hadoop102 .ssh]$ ssh-copy-id hadoop103
[lzw@hadoop102 .ssh]$ ssh-copy-id hadoop104

ssh无密登录的原理图奉上:

 8.配置集群

1.核心配置文件

cd $HADOOP_HOME/etc/hadoopvim core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><!-- 指定 NameNode 的地址 --><property><name>fs.defaultFS</name><value>hdfs://hadoop102:8020</value></property><!-- 指定 hadoop 数据的存储目录 --><property><name>hadoop.tmp.dir</name><value>/opt/module/hadoop-3.1.3/data</value></property><!-- 配置 HDFS 网页登录使用的静态用户为 lzw--><property><name>hadoop.http.staticuser.user</name><value>lzw</value></property>
</configuration>

2.hdfs配置文件

vim hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- nn web 端访问地址-->
<property><name>dfs.namenode.http-address</name><value>hadoop102:9870</value></property>
<!-- 2nn web 端访问地址--><property><name>dfs.namenode.secondary.http-address</name><value>hadoop104:9868</value></property>
</configuration>

3.Yarn配置文件

vim yarn-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><!-- 指定 MR 走 shuffle --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 指定 ResourceManager 的地址--><property><name>yarn.resourcemanager.hostname</name><value>hadoop103</value></property><!-- 环境变量的继承 --><property><name>yarn.nodemanager.env-whitelist</name><value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO
NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP
RED_HOME</value></property>
</configuration>

4.MapReduce配置文件

vim mapred-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定 MapReduce 程序运行在 Yarn 上 --><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration>

将配置好的Hadoop文件分发给其他虚拟机

sxync /opt/module/hadoop-3.1.3/etc/hadoop/

9.配置works

vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

 添加以下内容,注意在添加的时候千万不能出现空格、空行

hadoop102
hadoop103
hadoop104

同步所有节点的配置文件

xsync /opt/module/hadoop-3.1.3/etc

10.启动集群

进入到hadoop-3.1.3的目录下:

//对hdfs进行初始化
hdfs namenode -format
//启动dfs
sbin/start-dfs.sh
//启动yarn
sbin/start-yarn.sh
Web 端查看 HDFS NameNode      浏览器中输入: http://hadoop102:9870
Web 端查看 YARN ResourceManager   浏览器中输入: http://hadoop103:8088
如果NameNode启动失败的话:
1.启动集群时如果碰到Attempting to operate on hdfs namenode as root错误:

第一种方法:输入如下命令,在环境变量中添加下面的配置

vi /etc/profile

然后向里面加入如下的内容

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

输入如下命令使改动生效

source /etc/profile

第二种方法:

将start-dfs.sh,stop-dfs.sh(在hadoop安装目录的sbin里)两个文件顶部添加以下参数

HDFS_DATANODE_USER=root

HADOOP_SECURE_DN_USER=hdfs

HDFS_NAMENODE_USER=root

HDFS_SECONDARYNAMENODE_USER=root

将start-yarn.sh,stop-yarn.sh(在hadoop安装目录的sbin里)两个文件顶部添加以下参数

YARN_RESOURCEMANAGER_USER=root

HADOOP_SECURE_DN_USER=yarn

YARN_NODEMANAGER_USER=root

报错先暂停,然后再清理原数据,再进行初始化

如果Yarn启动失败的话:

2.ERROR: Attempting to operate on yarn resourcemanager as root ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.出现以上报错信息需要到 sbin 目录下 更改 start-yarn.sh 和 stop-yarn.sh 信息,在两个配置文件的第一行添加:

YARN_RESOURCEMANAGER_USER=root

HADOOP_SECURE_DN_USER=yarn

YARN_NODEMANAGER_USER=root

 制作不易,恳请关注!!!


http://www.ppmy.cn/news/62726.html

相关文章

css行内元素、块元素、行内块元素的区别

行内元素的特点&#xff1a; 1.和其他元素在一行显示 2.元素的宽度、高度、行高及底部边距不可编辑 3.元素的宽度就是它包含的文字或图片的宽度&#xff0c;不可改变 4.行内元素只能容纳纯文本或者是其他的行内元素&#xff08;a标签除外&#xff0c;a里面不能放自己&#xff0…

Java线程池编码示例

第1步&#xff1a;自定义线程实现类 Java中多线程编码时&#xff0c;定义线程类有两种方式&#xff1a; 继承Thread类实现Runnable接口&#xff08;由于Java的单继承特性&#xff0c;一般推荐使用此方式&#xff09; public class BizThread implements Runnable {private int …

k8s基础4——deployment控制器、应用部署、升级、回滚、水平扩容缩容

文章目录 一、基本介绍二、应用程序生命周期2.1 部署应用2.2 应用升级2.2.1 修改YAML文件升级&#xff08;交互式&#xff09;2.2.2 命令指定镜像版本升级&#xff08;免交互式&#xff09;2.2.3 调用vim升级 2.3 滚动升级2.3.1 升级流程 2.4 应用回滚2.4.1 查看历史发布版本2.…

Lodash学习进程

Lodash是一个流行的JavaScript工具库&#xff0c;提供了许多实用的函数和方法&#xff0c;用于简化JavaScript编程中的常见任务和操作。本文将介绍Lodash的基本用法和一些常见的应用场景。 javascript 安装和导入 可以通过npm或yarn安装Lodash&#xff0c;例如&#xff1a;npm …

前端优化-兼容问题

1.样式兼容 1)ios键盘大写问题 <input type"text" autocapitalize"off"></input> 2&#xff09;h5标签在低版本浏览器兼容 添加html5shiv.js 布局前加入 <!-- [if it ie 9] ><script src"shiv.js"></script>…

循环队列、双端队列

循环队列、双端队列 1. 循环队列1.1 循环队列1.2 代码实现1.3 力扣622. 设计循环队列2. 双端队列 1. 循环队列 1.1 循环队列 特殊的队列&#xff0c;首尾相连&#xff0c;空间可重复利用&#xff1b;环形队列常使用数组实现&#xff0c;且为了方便队列的判空、判满处理&#x…

Yjs + quill:快速实现支持协同编辑的富文本编辑器

大家好&#xff0c;我是前端西瓜哥&#xff0c;这次来看看 Yjs 如何帮助我们实现协同编辑能力的。 Y.js 是一个支持 协同编辑 的开源库。只要我们将自己的数据转换为 Y.js 提供的 Y.Array、Y.Map 类型&#xff0c;Y.js 就会自动帮我们做数据的一致性处理和同步。 一致性问题 …

基于Java的两个通用安全模块的设计与实现

摘 要 本文详细介绍了基于口令的身份认证与文件安全传输两个通用安全模块的设计原理和实现过程,分析了当前口令保存的安全性,提出了运用MD5算法等对口令进行处理,并将处理结果保存在数据库中的方法。同时为了进一步增强认证系统的灵活度,设计了用户注册时的口令模式选择、…