Hadoop完全分布式配置

环境

乌班图Linux系统装虚拟机------至少安装两个虚拟机

Hadoop完全分布式环境

1.安装Java、Hadoop

文章:https://blog.csdn.net/2401_86886401/article/details/151230102?spm=1001.2014.3001.5501

可以看到Java和Hadoop的安装方法

2.网络配置

1.网络适配器设置
2.使IP地址不改变(NAT模式)
1.查看网关和IP范围

(进入后,记录网关)

(进入后记录IP范围)

2.在系统中设置静态IP
bash 复制代码
ip addr
//查看网卡名称(类似ens33、ens160)记住
bash 复制代码
ls /etc/netplan
//查看配置文件名称(较新版本)

//如果上一条失败(自身版本较旧)
sudo nano /etc/network/interfaces
bash 复制代码
//文档编辑格式
auto ens33
iface ens33 inet static
    address 192.168.6.100  # 你要设置的静态 IP 地址,需在子网内且不冲突
    netmask 255.255.255.0  # 子网掩码
    gateway 192.168.5.1    # 网关 IP,即之前看到的
    dns-nameservers 8.8.8.8 114.114.114.114  # DNS 服务器地址

退出文档时"Ctrl+o"-->回车-->"Ctrl+x"

bash 复制代码
sudo systemctl restart networking
//重启网络服务

3.修改主机名(设置一个主节点-Master,一个从节点-Slave1)

1.修改/etc/hostname文件(设置后要重启)

这是储存系统主机名的核心文件

bash 复制代码
sudo vim /etc/hostname
//打开主机文件

(主节点)

(从节点)

2.修改/etc/hosts文件(地址要设置成ifconfig命令后看到的地址,设置后要重启)

这是一个本地DNS解析文件,用于将主机名映射到IP地址

作用:

1.让系统能通过主机名找到对应的IP

2.避免一些依赖主机名解析的程序错误

bash 复制代码
sudo vim /etc/hosts
//打开DNS文件

(主机名修改要区分大小写)

tip1:在命令模式下点击"i"进入编辑模式

tip2:退出vim编辑要在命令模式(Esc)下输入":"+"wq"

3.测试是否互通(注意地址是否设置正确,否则不通)

需要两个虚拟机都打开

bash 复制代码
ping Slave1 -c 3
//用主节点联通从节点

(成功)

4.SSH无密码登录节点

1.安装SSH(所有机器都要装)
bash 复制代码
sudo apt-get install openssh-server
//安装SSH server
2.第一次装可以看博主的伪分布式配置链接:https://blog.csdn.net/2401_86886401/article/details/151230102?spm=1001.2014.3001.5501
3.生成公钥,并无密码登录(有公钥则删除重新生成)
bash 复制代码
cd ~/.ssh
//如果没有该目录则执行一次"ssh localhost"
rm ./id_rsa*
//如果之前有公钥则删除
ssh-keygen -t rsa
//一直回车就行
bash 复制代码
cat ./id_rsa.pub >> ./authorized_keys
//令节点能无密码登录
4.将公钥传给其他节点(其他节点也要开机)
bash 复制代码
scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/
//hadoop是你的从节点的用户名,如果不同,要修改

(有100%则成功)

5.在从节点上将SSH公钥加入授权
bash 复制代码
mkdir ~/.ssh
//创建文件夹,如果有则不需要创建
查看是否有没有------"ls -l ~/.ssh"
bash 复制代码
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
//加入授权
bash 复制代码
rm ~/id_rsa.pub
//用完删除就行
6.尝试登录
bash 复制代码
ssh hadoop1@Slave1
//hadoop1是我的从节点用户名,填自己的

5.配置PATH变量

使hdfs命令能在任意目录生效

在博主https://blog.csdn.net/2401_86886401/article/details/151230102?spm=1001.2014.3001.5501中可以看

bash 复制代码
start-dfs.sh
//其在任意目录都能运行

6.配置集群/分布式环境

1.修改workers文件(主、从节点的worker文件都要修改)

需要将所有数据节点的主机名写入文件,一行一个(默认为localhost------把本机作为++名称节点++ 和++数据节点++)。在分布式配置时可以保留localhost,让本机节点既是名称节点也是数据节点,也可以删除localhost,使本机节点只作为名称节点使用

bash 复制代码
vim /opt/hadoop-3.1.3/etc/hadoop/workers
//编辑workers文件

(Master作为名称节点使用)

2.修改core-site.xml文件

参考:https://blog.csdn.net/2401_86886401/article/details/151230102?spm=1001.2014.3001.5501

(其中的localhost改为IP地址、Master

同步从节点

bash 复制代码
scp /opt/hadoop-3.1.3/etc/hadoop/core-site.xml hadoop1@Slave1:/opt/hadoop-3.1.3/etc/hadoop
//将主节点配置的文件同步给从节点
3.修改hdfs-site.xml文件

参考:https://blog.csdn.net/2401_86886401/article/details/151230102?spm=1001.2014.3001.5501

要在文件中多增加一段

bash 复制代码
<configuration>
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>Master:50090</value>
  </property>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/opt/hadoop-3.1.3/hadoop/tmp/dfs/name</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/opt/hadoop-3.1.3/hadoop/tmp/dfs/data</value>
  </property>
</configuration>
4.修改mapred-site.xml文件

在自己的hadoop文件路径下文件"mapred-site.xml.template"修改为mapred-site.xml(有些自己就是修改后的文件,不用人为修改),然后修改文件配置

bash 复制代码
mv mapred-site.xml.template mapred-site.xml
//修改文件名,有些不用修改
bash 复制代码
gedit mapred-site.xml
//打开要修改的文件
bash 复制代码
<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.adress</name>
    <value>Master:10020</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>Master:19888</value>
  </property>
  <property>
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=/opt/hadoop-3.1.3</value>
  </property>
  <property>
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=/opt/hadoop-3.1.3</value>
  </property>
  <property>
    <name>mapreduce.reduce.env</name>
    <value>HADOOP_MAPRED_HOME=/opt/hadoop-3.1.3</value>
  </property>
</configuration>

//修改配置,注意用自己的路径
5.修改yarn-site.xml文件
bash 复制代码
gedit yarn-site.xml
//打开文件
bash 复制代码
<configuration>
<!-- Site specific YARN configuration properties -->
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>Master</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
</configuration>

//配置文件
//第二行是注释,可以不删除
6.将Master的文件复制给从节点(要清除伪分布模式下生成的临时文件)
bash 复制代码
cd /opt/hadoop-3.1.3
//切换目录

sudo rm -r ./hadoop-3.1.3/tmp
//删除Hadoop临时文件

sudo rm -r ./logs/*
//删除日志文件

cd /opt
//切换目录

tar -zcf ~/hadoop.master.tar.gz hadoop-3.1.3
//先压缩再复制
bash 复制代码
scp ~/hadoop.master.tar.gz hadoop1@Slave1:/home/hadoop1
//复制文件到从节点
7.在从节点上解压文件
bash 复制代码
sudo rm -r /opt/hadoop-3.1.3
//删除旧的

sudo tar -zxf ~/hadoop.master.tar.gz -C /opt
//解压主节点传输文件

sudo chown -R hadoop1 /opt/hadoop-3.1.3
//修改文件和目录的拥有者
8.格式化Master名称节点(只需要进行一次)
bash 复制代码
hdfs namenode -format
//格式化名称节点
9.启动Hadoop
bash 复制代码
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver 此命令可能弃用,替换为"mapred --daemon start"
//开启Hadoop

(主节点成功)

(从节点成功)

(主节点输入红框命令------成功)

10.分布式实例
bash 复制代码
start-dfs.sh
start-yarn.sh
mapred --daemon start
//开启服务
bash 复制代码
hdfs dfs -mkdir -p /user/hadoop
//创建HDFS上的用户目录

hdfs dfs -mkdir input
//创建一个input目录

hdfs dfs -put /opt/hadoop-3.1.3/etc/hadoop/*.xml input
//将配置文件复制到input目录
bash 复制代码
hadoop jar /opt/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input output 'dfs[a-z.]+'
//运行mapreduce作业

会显示进度,如果长时间进度没变化可以重启试试,也可以看硬盘内存够不够

11.关闭Hadoop集群
bash 复制代码
stop-yarn.sh
stop-dfs.sh
mr-jobhistory-daemon.sh stop historyserver
//关闭Hadoop集群
相关推荐
Lx3522 小时前
Flink容错机制:Checkpoint和Savepoint深入解析
大数据
QQ5416451213 小时前
【小增长电商软件分享】微信私域淘宝电商补单/做基础销量:如何有效控制粉丝错货、复购、订单插旗及客服转账返款等常见痛点|粉丝订单管理|电商鱼塘运营方案
大数据·电商私域粉丝管理·电商私域运营系统解决方案·粉丝订单关系系统
字节跳动数据平台4 小时前
多模态数据湖技术深化,Data Agent新能力发布!“认知”将决定企业上限
大数据
字节跳动数据平台5 小时前
得物×火山引擎:Data Agent驱动财务管理智能升级
大数据
想ai抽5 小时前
Spark的shuffle类型与对比
大数据·数据仓库·spark
智海观潮5 小时前
JVM垃圾回收器、内存分配与回收策略
java·大数据·jvm
回家路上绕了弯6 小时前
外卖员重复抢单?从技术到运营的全链路解决方案
分布式·后端
随心............6 小时前
sqoop采集完成后导致hdfs数据与Oracle数据量不符的问题。怎么解决?
hive·hadoop·sqoop
B站_计算机毕业设计之家6 小时前
机器学习:基于大数据的基金数据分析可视化系统 股票数据 金融数据 股价 Django框架 大数据技术(源码) ✅
大数据·python·金融·数据分析·股票·etf·基金
忍冬行者6 小时前
Kafka 概念与部署手册
分布式·kafka