一. 创建模板机二. 魔板机调试配置
2.1 测试是否可上网2.2 安装工具配置免密登录2.3关闭防火墙 关闭防火墙开机自启动2.4 创建atguigu用户,更改密码2.5 切换到atguigu用户,创建文件夹2.7 修改克隆机主机名2.8 root用户修改静态ip2.8 在魔板机安装jdk(atguigu用户)2.10 在魔板机安装hadoop 伪分布搭建三. 完全分布式准备
3.1 克隆虚拟机3.2 打开虚拟机3.3 更改主机名3.4 配置静态ip
3.4.1 编辑ifcf-ens33文件3.4.2 配置信息3.4.3 重启虚拟机 3.5 配置每台主机映射hosts文件3.6 修改windows的主机映射文件(hosts文件) 四·完全分布式搭建
4.1 准备三台客户机
4.1.1 虚拟机准备4.1.2 编写集群分发脚本xsync
<1>scp<2>rsync同步工具<3>xsync集群分发脚本 4.2 配置ssh免密登录4.3 单点启动4.4 配置集群
4.4.1 集群配置原则4.4.2 配置文件说明4.4.3 配置文件4.4.4 分发hadoop 4.5 群起并测试集群
4.5.1 配置slaves4.5.2 启动集群
1.初始化集群2.正式启动集群 4.5.3 Web端查看HDFS的NameNode 4.6 配置历史服务器4.7 配置日志聚集4.8 集群启动停止方式总结4.9 hadoop集群常用脚本
4.9.1 hadoop启动、停止脚本
4.9.2 查看三台服务器进程脚本:jpsall 4.10 集群时间同步
话不多说,安装完全分布式的血泪史太长了,这次直接给自己把安装过程全部弄正确记录下来。所谓完美的安装过程。
一. 创建模板机创建新的虚拟机
二. 魔板机调试配置 2.1 测试是否可上网ping Ctrl+z 退出联网测试2.2 安装工具
1.安装epel-release yum install -y epel-release 2.安装net-tools工具:包含ifconfig工具 yum install -y net-tools 3.安装ntp yum install -y ntp配置免密登录
1.生成密钥
2.进入/root/.ssh,将公钥O导入
2.3关闭防火墙 关闭防火墙开机自启动
systemctl stop firewalld 关闭防火墙 systemctl disable firewalld.service 关闭防火墙开机自启动2.4 创建atguigu用户,更改密码
1.创建atguigu用户 useradd atguigu 2.更改密码 passwd atguigu 3.添加atguigu sudo具有root权限 vim /etc/sudoers 在%wheel ALL=(ALL) ALL下一行添加: atguigu ALL=(ALL) NOPASSWD:ALL :wq!强制保存2.5 切换到atguigu用户,创建文件夹
1.切换到atguigu用户
su - atguigu
2.7 修改克隆机主机名2.创建文件夹
sudo mkdir /opt/module //安装路径
sudo mkdir /opt/software //存放安装包
3.修改module、software文件夹的所有者和所属组均为atguigu用户
chown atguigu:atguigu /opt/module
chown atguigu:atguigu /opt/software
4.查看module、software文件夹的所有者和所属组
cd /opt/
ll
1.修改主机名称
vim /etc/hostname
配置Linux克隆机主机名称映射hosts文件,打开/etc/hosts
vim /etc/hosts 添加 192.168.10.100 hadoop100
2.8 root用户修改静态ip3.修改windows的主机映射文件(hosts文件)
C:WindowsSystem32driversetc中 打开hosts文件并添加如下内容,然后保存 192.168.10.100 hadoop100
1.vim /etc/sysconfig/network-scripts/ifcfg-ens33
2.添加TYPE="Ethernet" PROXY_METHOD="none" BROWSER_onLY="no" BOOTPROTO="static" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" IPADDR=192.168.10.100 PREFIX=24 GATEWAY=192.168.10.2 DNS1=192.168.10.2
3.查看Linux虚拟机的虚拟网络编辑器,编辑->虚拟网络编辑器->VMnet8
查看Windows系统适配器VMware Network Adapter VMnet8的IP地址
2.8 在魔板机安装jdk(atguigu用户)4.保证Linux系统ifcfg-ens33文件中IP地址、虚拟网络编辑器地址和Windows系统VM8网络IP地址相同。
5.重启
reboot
1.解压jdk到/opt/module
tar -zxvf xxxxxxx -C /opt/module/
2.10 在魔板机安装hadoop2.配置JDK环境变量
(1)新建/etc/profile.d/my_env.sh文件 sudo vim /etc/profile.d/my_env.sh (2)添加 #JAVA_HOME export JAVA_HOME=/opt/module/jdk1.8.0_212 export PATH=$PATH:$JAVA_HOME/bin (3)让新的环境变量PATH生效 source /etc/profile
1.解压安装文件到/opt/module下面
tar -zxvf hadoop-2.7.3.tar.gz -C /opt/module/2.配置hadoop环境变量
伪分布搭建3.使环境变量生效
建立hadoop工作目录/var/hadoop
fs.defaultFS hdfs://hadoop100:9000 hadoop.tmp.dir /opt/hadoopTmp/
vi etc/hadoop/hdfs-site.xml
格式化hdfs命令:
hdfs namenode -format
成功
yarn配置 vi etc/hadoop/yarn-site.xml
yarn.resourcemanager.hostsname BigData01 yarn.nodemanager.aux-services mapreduce_shuffle
配置mapred-site.xml
mapreduce.framework.name yarn
启动
hbase单机
三. 完全分布式准备 3.1 克隆虚拟机hbase.zookeeper.quorum localhost hbase.zookeeper.property.clientPort 2181 hbase.unsafe.stream.capability.enforce #使用我们电脑的文件系统,作为数据存储。false hbase.master.ipc.address 0.0.0.0 hbase.regionserver.ipc.address 0.0.0.0
克隆出 3台虚拟机 Hadoop102 hadoop103 hadoop1043.2 打开虚拟机
打开虚拟机,ifconfig命令查看ip,方面在连接工具上连接虚拟机。3.3 更改主机名
Root用户,更改各个虚拟机主机名(如hadoop102)3.4 配置静态ip
Root用户,配置各个虚拟机静态IP(如hadoop102)3.4.1 编辑ifcf-ens33文件 3.4.2 配置信息
使用这个配置信息,更改IP
TYPE="Ethernet" PROXY_METHOD="none" BROWSER_onLY="no" BOOTPROTO="static" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" IPADDR=192.168.10.102 PREFIX=24 GATEWAY=192.168.10.2 DNS1=192.168.10.23.4.3 重启虚拟机
此时已经修改成自己想要的ip3.5 配置每台主机映射hosts文件
重启:reboot3.6 修改windows的主机映射文件(hosts文件)
进入C:WindowsSystem32driversetc路径找到hosts 1.修改windows的主机映射文件(hosts文件) 2.修改windows的主机映射文件(hosts文件)四·完全分布式搭建 4.1 准备三台客户机
要求:关闭防火墙,已配置静态IP,主机名称完善
4.1.1 虚拟机准备看第三章
4.1.2 编写集群分发脚本xsync1.使用三种命令在主机之间传输文件 (1)scp (2)rsync (3)xsync<1>scp
2.scp:可以实现服务器与服务器之间的数据拷贝,拷贝,拷贝!! (1)语法: scp -r $pdir/fname $user@hosr:$pdir/fname 命令 递归 文件路径/文件名称 目的地用户@主机:目的地路径/名称 (2)使用前提:虚拟机器中有相同文件夹或者文件,并且权限归自定义用户所有
案例:在hadoop102上 把/opt/module/hadoop-2.7.3目录拷贝到hadoop103,hadoop104
出现连接错误,需要将对应的IP加到/etc/hosts中。
解决问题后成功:
<2>rsync同步工具1.rsync:主要用于备份和镜像,速度快,可以变复制相同内容和支持符号链接的优点 2.rsync和scp区别:用rsync做文件的复制比scp复制所用时间短,rsync只对差异文件做复制,scp是复制所有文件。 3.基本语法: rsync -av $pdir/$fname $user@host:$pdir/fname 命令 选项参数 文件路径/文件名 目的地用户@主机:目的地路径/名称 4.参数说明: (1)-a 归档拷贝 (2)-v 显示复制过程
案例:
<3>xsync集群分发脚本(1)删除hadoop103中的/opt/module/hadoop-2.7.3/bin文件(只是实验,平时不能随便删除bin目录)
补充知识点:删除安装的tar包
rm -r 安装包路径/安装包名称
(2)同步hadoop102中的/opt/module/hadoop-2.7.3/bin文件到hadoop103
1.需求:循环复制文件到所有节点的相同目录下 2.rsync原始命令拷贝 rsync -av /opt/module atguigu@hadoop103:/opt/
1.期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)
2.在根目录创建bin文件夹
3.在/home/atguigu/bin 目录下创建xsync脚本
sudo vim xsync
!!!!!!注意粘贴一定要先按i,不然脚本可能没用!!!!!! #!/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 done4.给脚本赋予权限
chmod 777 xsync
文件赋予权限之后变成绿色,可以使用脚本了
5.同步当前bin目录到hadoop103
4.2 配置ssh免密登录6.当sudo xsync绝对路径 赋值文件,就可以赋值给root用户
主机之间互相登录不需要输入密码就可以登录
1.进入家目录 /home/atguigu
2.ls -all 查看所有隐藏文件
3.进入 .ssh文件,发现一个known_hosts文件
known_hosts文件中有访问数据,说明有主机访问过
4.现在配置hadoop102无密登录hadoop103ssh-keygen -t rsa (3次回车搞定)
此时在查看ssh中九多了一个公钥,一个私钥
私钥:
公钥:
5.拷贝hadoop102的公钥到hadoop03,hadoop104(第一次需要输入密码)
6.测试,成功登录
7.配置hadoop102无密登录hadoop104
此时再使用xsync不用再输入密码
原则:
(1)NameNode和SecondaryNode不要放在同一台机器上,因为都很耗费内存
(2)
4.4.2 配置文件说明
hadoop配置文件有两类:
默认配置文件:
自定义配置文件:只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值
(1)默认配置文件:
| 要获取的默认文件 | 文件存放在Hadoop的jar包中的位置 |
|---|---|
| [core-default.xml] | hadoop-common-3.1.3.jar/core-default.xml |
| [hdfs-default.xml] | hadoop-hdfs-3.1.3.jar/hdfs-default.xml |
| [yarn-default.xml] | hadoop-yarn-common-3.1.3.jar/yarn-default.xml |
| [mapred-default.xml] | hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml |
(2)自定义配置文件
core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml 四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。4.4.3 配置文件
1.core-site.xml
fs.defaultFS hdfs://hadoop102:8020 hadoop.tmp.dir /opt/module/hadoop-2.7.3/data hadoop.http.staticuser.user atguigu [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8KOqiOfc-1647959275653)(C:UsersLenovoAppDataRoamingTyporatypora-user-images1647306182723.png)]" />
2.hdfs-site.xml
dfs.namenode.http-address hadoop102:9870 dfs.namenode.secondary.http-address hadoop104:9868 3.yarn-site.xml
yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname hadoop103 yarn.nodemanager.env-whitelist JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
4.4.4 分发hadoop4.mapred-site.xml
mapreduce.framework.name yarn
4.5 群起并测试集群 4.5.1 配置slaves1.把/opt/module/hadoop-2.7.3/etc/hadoop文件分发给hadoop103,hadoop104
成功:可以在hadoop103看到
4.5.2 启动集群 1.初始化集群1.配置slaves,默认是localhost
2.添加工作的节点(不允许有空格)
3.分发slaves
注意:首次启动,需要在hadoop102格式化NameNode --------------------------------------------------------- (注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。) ---------------------------------------------------
2.正式启动集群1.在hadoop102格式化NameNode
2.出现成功
3.ls -all 查看所有文件,包括隐藏文件 新出现data,logs
解决办法(非必要):
4.5.3 Web端查看HDFS的NameNode1.进入/opt/module/hadoop-2.7.3/sbin,里面有启动命令
2.输入hadoop102输入命令启动namenode
3.hadoop103输入命令启动resourcemanger
start-yarn.sh4.jps查看各个主机进程
4.6 配置历史服务器(1) Web端查看HDFS的NameNode 浏览器中输入:
http://hadoop102:9870 查看HDFS上存储的数据信息
(2)Web端查看YARN的ResourceManager 浏览器中输入:
http://hadoop103:8088 查看YARN上运行的Job信息
为了查看程序的历史运行情况,需要配置一下历史服务器。
1.配置mapred-site.xml
2.分发配置
3.在hadoop102 启动历史服务器
mr-jobhistory-daemon.sh start historyserver4.查看进程jps,是否启动成功
4.7 配置日志聚集5.查看JobHistory
4.8 集群启动停止方式总结1.配置yarn-site.xml
yarn.log-aggregation-enable true yarn.log.server.url http://hadoop102:19888/jobhistory/logs yarn.log-aggregation.retain-seconds 604800 2.分发配置
3.关闭NodeManager 、ResourceManager和HistoryServer
4.启动NodeManager 、ResourceManager和HistoryServer
5.查看日志:当有过作业就会有日志文件(这里还没有作业)历史服务器地址 http://hadoop102:19888/jobhistory
各个模块分开启动/停止(配置ssh是前提)常用 1.整体启动/停止HDFS start-dfs.sh/stop-dfs.sh 2.整体启动/停止YARN start-yarn.sh/stop-yarn.sh 3.整体启动/停止historyserver mr-jobhistory-daemon.sh start/stop historyserver 各个服务组件逐一启动/停止 1.分别启动/停止HDFS组件 hdfs --daemon start/stop namenode/datanode/secondarynamenode 2.启动/停止YARN yarn --daemon start/stop resourcemanager/nodemanager4.9 hadoop集群常用脚本 4.9.1 hadoop启动、停止脚本
1.进入atguigu/bin,创建myhadoop.sh脚本 cd /home/atguigu/bin vim myhadoop.sh
2.加入如下内容
#!/bin/bash
if [ $# -lt 1 ]
then
echo "No Args Input..."
exit ;
fi
case $1 in
"start")
echo " =================== 启动 hadoop集群 ==================="
echo " --------------- 启动 hdfs ---------------"
ssh hadoop102 "/opt/module/hadoop-2.7.3/sbin/start-dfs.sh"
echo " --------------- 启动 yarn ---------------"
ssh hadoop103 "/opt/module/hadoop-2.7.3/sbin/start-yarn.sh"
echo " --------------- 启动 historyserver ---------------"
ssh hadoop102 "/opt/module/hadoop-2.7.3/bin/mapred --daemon start historyserver"
;;
"stop")
echo " =================== 关闭 hadoop集群 ==================="
echo " --------------- 关闭 historyserver ---------------"
ssh hadoop102 "/opt/module/hadoop-2.7.3/bin/mapred --daemon stop historyserver"
echo " --------------- 关闭 yarn ---------------"
ssh hadoop103 "/opt/module/hadoop-2.7.3/sbin/stop-yarn.sh"
echo " --------------- 关闭 hdfs ---------------"
ssh hadoop102 "/opt/module/hadoop-2.7.3/sbin/stop-dfs.sh"
;;
*)
echo "Input Args Error..."
;;
esac
3.赋予脚本权限 chmod +x myhadoop.sh4.9.2 查看三台服务器进程脚本:jpsall
1.进入·/home/atguigu/bin,创建jpsall文件 cd /home/atguigu/bin vim jpsall
2. 输入
#!/bin/bash
for host in hadoop102 hadoop103 hadoop104
do
echo =============== $host ===============
ssh $host jps
done
3.赋予脚本权限 chmod +x jpsall
4分发/home/atguigu/bin目录 xsync /home/atguigu/bin/
测试成功
4.10 集群时间同步1.安装ntp插件
yum install ntp
2.进入/etc 看到出现文件夹ntp,ntp.conf文件
3.开始ntpd服务
syatemctl start ntpd
4.编辑 修改ntp.conf文件
vim /etc/ntp.conf
5.编辑ntpd
vim /etc/sysconfig/ntpd
6.开始时间服务
systemctl start ntpd systemctl enable ntpd



