前提: 准备好三台可以互相通信的虚拟机,虚拟机创建教程可以参考我的上一篇博客
1、编写集群分发脚本rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。
# scp -r $pdir/$fname $user@hadoop$host:$pdir/$fname # 命令 递归 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称 scp -r /opt/module/jdk1.8.0_212 atguigu@hadoop103:/opt/module # rsync -av $pdir/$fname $user@hadoop$host:$pdir/$fname # 命令 选项参数 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称 rsync -av /opt/software/* atguigu@hadoop103:/opt/software
Linux cd命令
# cd -P /var/lock 可以直接切换到这个目录链接的地址 /run/lock/ [atguigu@hadoop104 ~]$ cd /var/ lrwxrwxrwx. 1 root root 11 12月 7 22:13 lock -> ../run/lock [atguigu@hadoop103 lock]$ cd -P /var/lock;pwd /run/lock [atguigu@hadoop103 lock]$ cd /var/lock;pwd /var/lock
脚本中mkdir 与 mkdir -p 的区别
# mkdir -p :递归创建目录,即使上级目录不存在,会按目录层级自动创建目录 [atguigu@hadoop103 software]$ mkdir aa/bb;ll mkdir: 无法创建目录"aa/bb": 没有那个文件或目录 总用量 520604 -rw-r--r--. 1 atguigu atguigu 338075860 10月 17 08:44 hadoop-3.1.3.tar.gz -rw-r--r--. 1 atguigu atguigu 195013152 10月 17 08:44 jdk-8u212-linux-x64.tar.gz [atguigu@hadoop103 software]$ mkdir -p aa/bb;ll 总用量 520608 drwxrwxr-x. 3 atguigu atguigu 4096 12月 11 17:02 aa -rw-r--r--. 1 atguigu atguigu 338075860 10月 17 08:44 hadoop-3.1.3.tar.gz -rw-r--r--. 1 atguigu atguigu 195013152 10月 17 08:44 jdk-8u212-linux-x64.tar.gzxsync集群分发脚本
# 说明:在/home/atguigu/bin这个目录下存放的脚本,atguigu用户可以在系统任何地方直接执行
[atguigu@hadoop102 ~]$ cd /home/atguigu
[atguigu@hadoop102 ~]$ ll
总用量 0
[atguigu@hadoop102 ~]$ cd /home/atguigu
[atguigu@hadoop102 ~]$ mkdir bin
[atguigu@hadoop102 ~]$ cd bin
[atguigu@hadoop102 bin]$ vim xsync
[atguigu@hadoop102 bin]$ cat xsync
#!/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
[atguigu@hadoop102 bin]$ chmod +x xsync
[atguigu@hadoop102 bin]$ sudo cp xsync /bin/
2、SSH远程登陆和退出
systemctl与service
Linux服务管理之unit的概念
# 安装SSH [atguigu@hadoop102 ~]$ yum install openssh-server # 查看SSH是否安装成功 [atguigu@hadoop102 ~]$ rpm -qa | grep ssh openssh-7.4p1-16.el7.x86_64 openssh-server-7.4p1-16.el7.x86_64 openssh-clients-7.4p1-16.el7.x86_64 libssh2-1.4.3-10.el7_2.1.x86_64 # 停止SSH服务 [atguigu@hadoop102 ~]$ sudo systemctl stop sshd # 开始SSH服务 [atguigu@hadoop102 ~]$ sudo systemctl start sshd # 重启SSH服务 [atguigu@hadoop102 ~]$ sudo systemctl restart sshd # 查看是否启动22端口 [atguigu@hadoop102 ~]$ sudo netstat -antp | grep sshd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 4695/sshd tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 4500/sshd: atguigu@ tcp 0 0 127.0.0.1:6011 0.0.0.0:* LISTEN 2325/sshd: atguigu@ tcp 0 0 192.168.1.34:22 192.168.1.11:63562 ESTABLISHED 2319/sshd: atguigu tcp 0 0 192.168.1.34:22 192.168.1.11:55215 ESTABLISHED 4495/sshd: atguigu tcp6 0 0 :::22 :::* LISTEN 4695/sshd tcp6 0 0 ::1:6010 :::* LISTEN 4500/sshd: atguigu@ tcp6 0 0 ::1:6011 :::* LISTEN 2325/sshd: atguigu@ # 设置开机启动 [atguigu@hadoop102 ~]$ sudo systemctl enable sshd # 则禁止SSH开机启动 [atguigu@hadoop102 ~]$ sudo systemctl disable sshd # 登录另一台电脑 [atguigu@hadoop102 ~]$ ssh hadoop103 # 登出另一台电脑 exit、logout、Ctrl + D [atguigu@hadoop102 ~]$ logout3、SSH免密登录(互相免密登录的机器上都要配置一次)
PS:hadoop102上,root账号还要配置一次
# Hadoop102生成一对公钥和私钥,键入命令后回车三次 [atguigu@hadoop102 ~]$ ssh-keygen -t rsa # 将公钥拷贝到要免密登录的目标机器hadoop102上 [atguigu@hadoop102 ~]$ ssh-copy-id hadoop102 # 将公钥拷贝到要免密登录的目标机器hadoop103上 [atguigu@hadoop102 ~]$ ssh-copy-id hadoop103 # 将公钥拷贝到要免密登录的目标机器hadoop104上 [atguigu@hadoop102 ~]$ ssh-copy-id hadoop104 # 配置免密登录所生成文件的目录 [atguigu@hadoop102 .ssh]$ pwd /home/atguigu/.ssh # 免密登录生成的文件 [atguigu@hadoop102 .ssh]$ ll 总用量 16 -rw-------. 1 atguigu atguigu 1197 12月 11 20:19 authorized_keys #记录ssh访问过计算机的公钥 -rw-------. 1 atguigu atguigu 1675 12月 11 20:10 id_rsa #生成的私钥 -rw-r--r--. 1 atguigu atguigu 399 12月 11 20:10 id_rsa.pub #生成的公钥 -rw-r--r--. 1 atguigu atguigu 552 12月 11 17:07 known_hosts #存放授权过的无密登录服务器公钥4、Hadoop配置文件
关于文件协议file:///
# 解压Hadoop [atguigu@hadoop102 ~]$ tar -zxvf /opt/software/hadoop-3.1.3.tar.gz -C /opt/module/ # 重要的四个配置文件 [atguigu@hadoop102 hadoop]$ ll | grep site -rw-r--r--. 1 atguigu atguigu 774 9月 12 2019 core-site.xml -rw-r--r--. 1 atguigu atguigu 775 9月 12 2019 hdfs-site.xml -rw-r--r--. 1 atguigu atguigu 620 9月 12 2019 httpfs-site.xml # 无关配置文件 -rw-r--r--. 1 atguigu atguigu 682 9月 12 2019 kms-site.xml # 无关配置文件 -rw-r--r--. 1 atguigu atguigu 758 9月 12 2019 mapred-site.xml -rw-r--r--. 1 atguigu atguigu 690 9月 12 2019 yarn-site.xml # 主要映射jdk的配置文件,可以不配 [atguigu@hadoop102 hadoop]$ ll | grep hadoop-env -rw-r--r--. 1 atguigu atguigu 3999 9月 12 2019 hadoop-env.cmd # 无关配置文件 -rw-r--r--. 1 atguigu atguigu 15903 9月 12 2019 hadoop-env.sh核心配置文件(用于全局的配置):core-site.xml
HDFS-- Hadoop中的ProxyUser
HDFS配置文件:hdfs-site.xmlfs.defaultFS hdfs://hadoop102:9820 hadoop.tmp.dir /opt/module/hadoop-3.1.3/data hadoop.http.staticuser.user atguigu hadoop.proxyuser.atguigu.hosts * hadoop.proxyuser.atguigu.groups * hadoop.proxyuser.atguigu.users *
配置用户访问NameNode、Secondary NameNode的网页地址
YARN配置文件:yarn-site.xmldfs.namenode.http-address hadoop102:9870 dfs.namenode.secondary.http-address hadoop104:9868
mr!shuffle详细全过程
MapReduce配置文件:mapred-site.xmlyarn.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 yarn.scheduler.minimum-allocation-mb 512 yarn.scheduler.maximum-allocation-mb 4096 yarn.nodemanager.resource.memory-mb 4096 yarn.nodemanager.pmem-check-enabled false yarn.nodemanager.vmem-check-enabled false
mapreduce.framework.name yarn
# 分发配置文件到其他两台机器 [atguigu@hadoop102 hadoop]$ xsync /opt/module/hadoop-3.1.3/etc/hadoop/ # 检查文件分发是否成功 [atguigu@hadoop103 hadoop]$ cat mapred-site.xml5、群起集群mapreduce.framework.name yarn
Linux如何查看端口
# 配置work [atguigu@hadoop102 hadoop]$ vim workers # 分发配置好的hadoop-3.1.3 [atguigu@hadoop102 hadoop]$ xsync /opt/module/hadoop-3.1.3 # 节点格式化NameNode # 重新格式化NameNode前,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录 [atguigu@hadoop102 hadoop]$ hdfs namenode -format # 单点启动,hadoop102:9870 [atguigu@hadoop102 hadoop-3.1.3]$ hdfs --daemon start namenode [atguigu@hadoop102 hadoop-3.1.3]$ jps 9222 NameNode 9288 Jps # hadoop102、hadoop103、hadoop104都启动一遍 [atguigu@hadoop102 hadoop-3.1.3]$ hdfs --daemon start datanode # hadoop104 :2nn在实际情况中不使用,现在只是练习 [atguigu@hadoop104 hadoop-3.1.3]$ hdfs --daemon start secondarynamenode # hadoop103 :rm 相关 [atguigu@hadoop103 hadoop-3.1.3]$ yarn --daemon start resourcemanager # hadoop102、hadoop103、hadoop104都启动一遍 [atguigu@hadoop102 hadoop-3.1.3]$ yarn --daemon start nodemanagerhadoop3.1.3单点启动/停止的集群命令
hdfs --daemon start namenode # hadoop102 hdfs --daemon start secondarynamenode # hadoop104 yarn --daemon start resourcemanager # hadoop103 hdfs --daemon start datanode # hadoop102、hadoop103、hadoop104 yarn --daemon start nodemanager # hadoop102、hadoop103、hadoop104 hdfs --daemon stop namenode # hadoop102 hdfs --daemon stop secondarynamenode # hadoop104 yarn --daemon stop resourcemanager # hadoop103 hdfs --daemon stop datanode # hadoop102、hadoop103、hadoop104 yarn --daemon stop nodemanager # hadoop102、hadoop103、hadoop1046、清理/tmp文件
# 正常情况下,/tmp目录的权限是: [atguigu@hadoop102 tmp]$ ls -l / drwxrwxrwt. 19 root root 4096 12月 12 18:16 tmp # 所有用户可以建立文件[文件夹],可以删除别人的文件[文件夹],但是不能改写别人的文件[文件夹]



