- Hadoop集群的搭建(虚拟机版)
- Hadoop集群的搭建(公网服务器版)
- Hadoop集群的使用
- HadoopIO
准备工作
博主安装环境:ubuntu20.04、hadoop2.10、jdk8
固定IP地址
编辑网络配置文件
Ubuntu版本18.04后sudo vi /etc/netplan/00-installer-config.yaml
Ubuntu版本18.04前vi /etc/network/interfaces
修改文件内容
network:
ethernets:
ens32:
#关闭动态分配ip地址
dhcp4: false
addresses: [你的IP地址/24]
#网关地址
gateway4: 你的IP地址前三位.2
#DNS服务器地址
nameservers:
#114和阿里的DNS
addresses: [114.114.114.114,223.5.5.5]
version: 2
执行命令,让配置生效sudo netplan apply
配置ssh免密登陆
免密登陆:
通过ssh命令登陆远程主机时,不需要手动输入密码
但是在登陆过程中需要密码,即在登陆过程中自动获取密码
ssh远程登录工具可以生产两种密钥,公钥用于加密,私钥用于解密
配置ssh免密登陆的过程:
假设有A和B两台主机,通过A主机免密登陆到B主机
- 在A和B两台主机上都执行ssh-keygen命令,生产公钥和私钥
在A主机上执行命令是为了生成公钥和私钥
在B主机上执行命令是为了生成.ssh目录 - 将A主机上的公钥通过scp方式拷贝给B主机
scp -r /home/用户名/.ssh/id_rsa.pub 主机名@IP地址:~
- 在B主机上,将A主机的公钥添加(追加)到认证密钥文件中
cat id_rsa.pub >> .ssh/authorized_keys
注意:
.ssh 目录的权限必须是700
.ssh/authorized_keys 文件权限必须是600
否则公钥认证不会生效。
配置主机名和IP的映射
在每一台主机上执行命令sudo vi /etc/hosts
添加内容127.0.0.1 localhost
你的IP地址 你的主机名
最好在Windows中也进行此配置
C:\windows\System32\drivers\etc\hosts
创建目录
在每台主机上创建存放软件和软链接的目录
创建目录sudo mkdir -p /opt/softwares /opt/links
修改权限sudo chown -R 用户名:用户名 /opt/*
搭建集群
Hadoop集群分为:
- 单机模式:不需要启动任何服务
- 伪分布式:只有一个计算机节点,主节点和从节点的服务都在该节点上启动
- 全分布式:有多个计算机节点,主节点和从节点的服务启动在不同的计算机节点上
下面主要讲述伪分布式的搭建过程
安装JDK
解压JDK的安装包到/opt/softwares目录中tar zxvf jdk-8u261-linux-x64.tar.gz -C /opt/softwares
创建JDK安装路径的软链接到/opt/links目录中ln -sf /opt/softwares/jdk1.8.0_261 /opt/links/jdk
配置环境变量vi ~/.bashrc
加入以下内容
####_JAVA_CONF_####
export JAVA_HOME=/opt/links/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${PATH}:${JAVA_HOME}/bin:${JRE_HOME}/bin
执行命令使配置生效source ~/.bashrc
检测是否安装成功java -version
安装Hadoop
解压tar zxvf hadoop-2.10.0.tar.gz -C /opt/softwares/
创建软链接ln -sf /opt/softwares/hadoop-2.10.0 /opt/links/hadoop
配置环境变量vi ~/.bashrc
####_HADOOP_CONF_####
export HADOOP_HOME=/opt/links/hadoop
export HADOOP_USER_NAME=用户名
export PATH=${PATH}:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
执行命令使配置生效source ~/.bashrc
检测是否安装成功hadoop version
配置Hadoop
以下文件皆在/opt/links/hadoop/etc/hadoop目录下
hadoop-env.sh
将第25行的JAVA_HOME的路径改为绝对路径
core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 用于配置HDFS集群的主节点的IP和端口 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://IP地址:9000</value>
</property>
</configuration>
hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- HDFS中数据块的备份个数 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- HDFS中数据块的大小(默认128M) -->
<property>
<name>dfs.blocksize</name>
<value>32M</value>
</property>
<!-- HDFS集群中主节点产生数据的存放位置 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///home/用户名/.bigdata/data/nn</value>
</property>
<!-- HDFS集群中从节点产生数据的存放位置 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/用户名/.bigdata/data/dn</value>
</property>
<!-- HDFS集群中【SecondaryNameNode】产生数据的存放位置 -->
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:///home/用户名/.bigdata/data/snn</value>
</property>
<property>
<name>dfs.namenode.checkpoint.edits.dir</name>
<value>file:///home/用户名/.bigdata/data/snn</value>
</property>
<!--Hadoop Web UI界面 -->
<property>
<name>dfs.http.address</name>
<value>IP地址:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>IP地址:50090</value>
</property>
</configuration>
mapred-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 配置MR程序的运行平台 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 配置访问MR程序运行的历史记录的IP和端口 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>IP地址:10020</value>
</property>
<!-- 配置通过浏览器访问MR程序运行的历史记录的IP和端口 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>IP地址:19888</value>
</property>
<!-- 从配置层面优化MR程序 -->
<property>
<name>mapreduce.job.ubertask.enable</name>
<value>true</value>
</property>
</configuration>
yarn-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 配置YARM集群主节点的IP地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>IP地址</value>
</property>
<!-- 配置MR程序中的数据混洗【Shuffle】方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<!-- 配置YARM集群中从节点产生的数据的存放位置 -->
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>file:///home/用户名/.bigdata/data/nm</value>
</property>
</configuration>
格式化HDFS集群
HDFS集群的格式化【一般情况下只做一次,并且只在主节点上做】:
命令:hdfs namenode -format
说明:
此操作只能执行一次
有些时候由于集群性能等问题,可能会导致HDFS集群的数据出现错乱,此时需要重新格式化集群
在重新格式化集群之前,要删除【在删除之前需要停止整个集群】集群中每个主机上的“/home/用户名/.bigdata/data/*”目录
执行以下命令即可:rm -r /home/用户名/.bigdata/data/*
# 该操作在所有的节点上做hdfs namenode -format
# 该操作只在主节点上做
启动/停止集群
查看节点是否启动成功的命令:jps
HDFS集群
- 主节点【NameNode】:
hadoop-daemon.sh start/stop namenode
- 从节点【DataNode】:
hadoop-daemon.sh start/stop datanode
- 第二名字节点【SecondaryNameNode】:
hadoop-daemons.sh start/stop secondarynamenode
- Web界面 IP地址:50070
YARN集群
- YARN集群依赖于HDFS集群,所以要先启动HDFS集群,再启动YARN集群
- 主节点【ResourceManager】:
yarn-daemon.sh start/stop resourcemanager
- 从节点【NodeManager】:
yarn-daemon.sh start/stop nodemanager
- MR程序作业运行历史记录服务器:
mr-jobhistory-daemon.sh start/stop historyserver
- YARN集群作业运行历史日志代理服务器:
yarn-daemon.sh start/stop proxyserver
- Web界面 IP地址:8088
一键启动/停止
start/stop-all.sh
:可用但已经过时- HDFS集群:
start/stop-dfs.sh
- YARN集群:
start/stop-yarn.sh
:不包含日志服务节点 - 要启动时包含WebAppProxyServer
需要修改start-yarn.sh,将35行的注释去掉
全分布式集群搭建
每个节点上的配置都一模一样
所有的配置文件中涉及的关于IP地址的配置都要一样
并且配置的是主节点的IP地址
配置文件slaves中需要填写所有从节点的IP地址,不要填写主节点的IP地址
编辑Hadoo安装目录下的etc/hadoop/slaves文件
填写所有从节点的IP地址或者主机名
编辑/opt/hadoop/sbin/start-yarn.sh,将35行的注释去掉
Comments NOTHING