scp案例(拷贝工具)
将当前主机一个文件完全复制到另一台主机上
scp -r /etc/profile root@主机名或ip:/etc/profile
将一个主机上的文件完全复制到当前主机
scp -r root@主机名或ip:/etc/profile /etc/profile
将一个主机上的文件完全复制到另一个主机上
scp -r root@主机名或ip:/etc/profile root@主机名或ip:/etc/profile
rsync案例(同步工具)
这个命令主要是同步文件中不同的内容,和scp的区别是复制东西比scp快,只对差异文件做更新。
rsync -rvl /etc/profile root@主机名或ip:/etc/profile
集群分发脚本
#!/bin/bash #1 获取输入参数个数,如果没有参数,直接退出 pcount=$# if((pcount==0)); then echo no args; exit; fi #2 获取文件名称 p1= fname=`basename $p1` echo fname=$fname #3 获取上级目录到绝对路径 pdir=`cd -P $(dirname $p1); pwd` echo pdir=$pdir #4 获取当前用户名称 user=`whoami` #5 循环 for((host=3; host<5; host++)); do echo ----------------------- hadoop$host --------- rsync -rvl $pdir/$fname $user@hadoop$host:$pdir done2、集群配置
集群部署规划
002
003
004
HDFS
NameNode
DataNode
DataNode
SecondaryNameNode
DataNode
YARN
NodeManager
ResourceManager
NodeManager
NodeManager
核心配置
配置core-site.xml
fs.defaultFS hdfs://002:9000 hadoop.tmp.dir /opt/software/hadoop-3.3.1/data/tmp
HDFS配置
配置hadoop-env.sh
export JAVA_HOME=
配置hdfs-site.xml
dfs.replication 3 dfs.namenode.secondary.http-address 004:9868
YARN配置
配置yarn-env.sh
export JAVA_HOME=
配置yarn-site.xml
yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname 003 yarn.log-aggregation-enable true yarn.log-aggregation.retain-seconds 604800
MapReduce配置
配置mapred-env.sh
export JAVA_HOME=
配置mapred-site.xml
mapreduce.framework.name yarn yarn.app.mapreduce.am.env HADOOP_MAPRED_HOME=${HADOOP_HOME} mapreduce.map.env HADOOP_MAPRED_HOME=${HADOOP_HOME} mapreduce.reduce.env HADOOP_MAPRED_HOME=${HADOOP_HOME} mapreduce.jobhistory.address LOONG002:10020 mapreduce.jobhistory.webapp.address LOONG002:19888
然后就是给所有节点同步配置
3、集群单节点启动启动之前先要删除data和logs文件夹,然后格式化
hdfs namenode -format
然后依次启动002的nameNode和dataNode;003的dataNode;004的dataNode
打开可视化页面查看效果,正常就是畅通无阻。
问题是以后面对的节点越来越多,成百上千甚至更多,不可能一个一个启动的啊,太费劲了
4、SSH无密登录配置基础语法:
ssh 另一台电脑的ip
但是这样需要输密码,下面来看一下免密登录的方法
免密登录:
免密登录原理:
生成公钥和私钥:
找到.ssh文件下,输入命令(后按三次回车),得到公钥和私钥
ssh-keygen -t rsa
如图
把公钥拷贝到002和003和004上
ssh-copy-id 主机名
如图,可以看到003上已经有002生产的公钥了
注意:
这里003上也要和002一样的步骤生成密钥以及拷贝到各个节点,这些 *** 作一遍,因为002上有NameNode,003上有ResourceManager
5、群起集群 启动HDFS给文件夹/opt/software/hadoop-3.3.1/etc/hadoop下修改workers文件,将所有DataNode节点的主机名写好
注意:务必严谨,不能有空格和回车
002节点下输入群起命令就OK了
sbin/start-dfs.sh
出现报错...
设置环境变量在/etc/profile导入如下配置
export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root启动YARN
003节点下输入群起命令就OK了
start-yarn.sh
集群基本测试
上传文件
hdfs dfs -put wcinput/wc.input /
网页上能看到上传的文件
而在linux上文件的路径是
/opt/software/hadoop-3.3.1/data/tmp/dfs/data/current/BP-1068672847-172.20.5.228-1640602419075/current/finalized/subdir0/subdir0
集群启动/停止方式总结
单节点
hdfs --daemon start datanode或namenode或secondarynamenode yarn --daemon start resourcemanager或nodemanager
集群
start-dfs.sh stop-dfs.sh start-yarn.sh stop-yarn.sh
注意:
NameNode和ResourceManager不在同一个机器时,不能在NameNode所在的节点上启动Yarn,应该在ResourceManager上启动
6、系统定时任务基本语法:
启动
service crond restart
crontab [选项]
crontab -e //编辑 crontab -l //查看任务 crontab -r //删除当前所有任务
crontab -e进入编辑界面:
* * * * * 执行任务含义
项目
含义
范围
第一个
分钟
0-59
第二个
小时
0-23
第三个
天
1-31
第四个
月
1-12
第五个
星期
0-7(0和7都是星期日)
特殊符号:
特殊符号
含义
*
代表任何时间。比如第一个*就代表每分钟执行一次
,
代表不连续的时间。比如“0 8,12,16 * * * ”意思是8点12点16点分别执行一次
-
代表连续的时间范围。比如“0 5 * * 1-6”代表周一到周六每天凌晨5点执行
*/n
代表每隔多久执行一次。比如“*/10 * * * *”,代表每隔10十分钟执行一次
练习:特定时间执行命令
22:45执行命令
45 22 * * *
每周一17:00分执行
0 17 * * 1
每月1号和15号凌晨5点执行
0 5 1,15 * *
每月周一到周五凌晨4:40
40 4 * * 1-5
每天凌晨4点,每隔10分钟执行
*/10 4 * * *
每月1号和15号,每周1的0点0分都会执行。
0 0 1,15 * 1
实例:每分钟往特定文件中写入一行字
crontab -e
内容
*/1 * * * * /bin/echo "love" >> /opt/software/abc.txt7、集群时间同步
(我用的云服务器,就不做相关 *** 作了)
时间同步的方式:一台机器作为时间服务器,所有的机器与这台集群时间进行定时的同步,比如:每隔十分钟,同步一次时间
1.时间服务器配置(root用户) (1)检查ntp是否安装rpm -qa | grep ntp(2)修改ntp配置文件
vim /etc/ntp.conf
第一:授权相应网段机器能够在这台机器上查询和同步时间
如以下语句
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
第二:集群在局域网中,不使用其他互联网上的时间
如以下语句全部注释掉#server 0.centos.pool.ntp.org iburst #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst
第三:添加以下内容(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)
server 127.127.1.0 fudge 127.127.1.0 stratum 10(3)修改/etc/sysconfig/ntpd 文件
vim /etc/ntp.conf
增加以下内容(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes(4)重新启动ntpd服务
service ntpd status 查看状态 service ntpd start 启动命令(5)设置ntpd服务开机启动
chkconfig ntpd on2.其他机器配置(root用户)
(1)在其他机器配置每10分钟与时间服务器同步一次
crontab -e
编写如下:
*/10 * * * * /usr/sbin/ntpdate 002
(2)修改任意机器时间
date -s "2021-12-18 11:11:11"
(3)十分钟后查看机器是否与时间服务器同步
date
声明:本文内容是学习阿里云社区下大数据学习路线尚硅谷网课总结而来
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)