scp安全拷贝
scp 可以实现服务器与服务器之间的数据拷贝。
在102上 将102的JDK拷贝到103
scp -r /opt/module/jdk1.8.0_212 yjr@hadoop103:/opt/module
在103上 将102的hadoop拷贝到103
scp -r yjr@hadoop102:/opt/module/hadoop-3.1.3 /opt/module/
在103上 将102的所有拷贝到104
scp -r yjr@hadoop102:/opt/module/* yjr@hadoop104:/opt/module
rsync 远程同步
rsync 主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync 和 scp 区别:用 rsync 做文件的复制要比 scp 的速度快,rsync 只对差异文件做更新。scp 是把所有文件都复制过去。
在102中,同步102中的hadoop到103
rsync -av hadoop-3.1.3/ atguigu@hadoop103:/opt/module/hadoop-3.1.3/
编写集群分发脚本xsync
作用:把文件循环复制到所有节点的相同目录下
先打印环境变量,发现可以放在/home/username/bin里面,可以全局使用。
脚本内容
#!/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
脚本权限
chmod +x xsync
测试
然后把my_env.sh分发到103,104即可
sudo ./bin/xsync /etc/profile.d/my_env.sh
SSH无密登陆
生成公钥和私钥
ssh-keygen -t rsa
拷贝公钥(拷贝的目标可以对它无密登陆)
[yjr@hadoop102 .ssh]$ ssh-copy-id hadoop102
[yjr@hadoop102 .ssh]$ ssh-copy-id hadoop103
[yjr@hadoop102 .ssh]$ ssh-copy-id hadoop104
集群配置
规划
注意两点:
- NameNode和SecondaryNameNode不要安装在同一台服务器上。
- ResourceManager 也很消耗内存,不要和 NameNode、SecondaryNameNode 配置在同一台机器上。
最后规划如下:
常用的配置文件
3.x
core-site.xml用于配置hadoop集群的特性,它作用于全部进程及客户端
hdfs-site.xml配置hdfs集群的工作属性
mapred-site.xsml配置mapreduce集群的工作属性
yarn-site.xml
workers
2.x
slaves
修改core-site.xml配置文件
文件包含了NameNode主机地址,监听端口等信息,对于伪分布式模型来说,其主机地址为localhost,NameNode默认使用的端口为8020
首先到它的目录
> cd /opt/module/hadoop-3.1.3/etc/hadoop
修改为
<configuration>
<?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 网页登录使用的静态用户为 atguigu -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>yjr</value>
</property>
</configuration>
修改hdfs-site配置文件
用于配置HDFS的相关属性,例如数据块的副本参数,NN和DN用于存储数据的目录。
同样去目录,将其修改为
<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>
修改yarn-site.xml配置文件
用于配置YARN进程及YARN相关属性。首先要指明ResourceManager守护进程的主机和监听的端口,对于伪分布式模型来讲。
其主机为localhost,默认端口为8032,其次需要指定ResourceManager使用的scheduler,一及NodeManager的辅助服务。
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- 指定 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>
修改yarn-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>
在102上集群分发已经配好的各类配置
xsync /opt/module/hadoop-3.1.3/etc/hadoop/
群起集群
配置workers
说明里面有几个节点就配置几个主机名称。配置完分发
启动集群
如果集群是第一次启动,需要在 hadoop102 节点格式化 NameNode(注意:格式化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停止namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。)
hdfs namenode -format
初始化成功后,可以发现多了一个data文件夹和log文件夹
启动集群
sbin/start-dfs.sh
102:
103:
104:
在配置了 ResourceManager 的节点(hadoop103)启动 YARN
查看相关网址
Web 端查看 HDFS 的 NameNode
(a)浏览器中输入:http://hadoop102:9870
(b)查看 HDFS 上存储的数据信息
Web 端查看 YARN 的 ResourceManager
(a)浏览器中输入:http://hadoop103:8088
(b)查看 YARN 上运行的 Job 信息