四会建设局网站,新网网站登录不上,南宁刚刚发生的事,营销手机系统安装二、Hadoop运行模式
1#xff09;Hadoop官方网站#xff1a;http://hadoop.apache.org
2#xff09;Hadoop运行模式包括#xff1a;本地模式、伪分布式模式以及完全分布式模式。
本地模式#xff1a;单机运行#xff0c;只是用来演示一下官方案例。生产环境不用。伪分…二、Hadoop运行模式
1Hadoop官方网站http://hadoop.apache.org
2Hadoop运行模式包括本地模式、伪分布式模式以及完全分布式模式。
本地模式单机运行只是用来演示一下官方案例。生产环境不用。伪分布式模式也是单机运行但是具备Hadoop集群的所有功能一台服务器模拟一个分布式的环境。个别缺钱的公司用来测试生产环境不用。完全分布式模式多台服务器组成分布式环境。生产环境使用。
2.1 完全分布式运行模式开发重点
分析
1.准备3台虚拟机关闭防火墙、静态IP、主机名称2.安装JDK3.配置环境变量4.安装Hadoop5.配置环境变量6.配置集群7.单点启动8.配置ssh9.群起并测试集群
2.2.1 虚拟机准备
详见1.1、1.2两节。
2.2.2 编写集群分发脚本xsync
1scpsecure copy安全拷贝 scp定义scp可以实现服务器与服务器之间的数据拷贝。from server1 to server2 1.基本语法重要 scp-r$pdir/$fname $user$host:$pdir/$fname命令递归要拷贝的文件路径/名称目的地用户主机:目的地路径/名称 2.案例实操 前提在hadoop102、hadoop103、hadoop104都已经创建好的/opt/module、 /opt/software两个目录并且已经把这两个目录修改为ovo:ovo [ovohadoop102 ~]$ sudo chown ovo:ovo -R /opt/module效果如图 a在hadoop102上将hadoop102中/opt/module/jdk1.8.0_212目录拷贝到hadoop103上。 [ovohadoop102 ~]$ scp -r /opt/module/jdk1.8.0_212 ovohadoop103:/opt/moduleb在hadoop103上将hadoop102中/opt/module/hadoop-3.1.3目录拷贝到hadoop103上。 [ovohadoop103 ~]$ scp -r ovohadoop102:/opt/module/hadoop-3.1.3 /opt/module/c在hadoop103上操作将hadoop102中/opt/module目录下所有目录拷贝到hadoop104上。 [ovohadoop103 opt]$ scp -r ovohadoop102:/opt/module/* ovohadoop104:/opt/module2rsync远程同步工具 rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。 rsync和scp区别用rsync做文件的复制要比scp的速度快rsync只对差异文件做更新。scp是把所有文件都复制过去。 1.基本语法 rsync-av$pdir/$fname $user$host:$pdir/$fname命令递归要拷贝的文件路径/名称目的地用户主机:目的地路径/名称选项参数说明 选项功能-a归档拷贝-v显示复制过程 2.案例实操 a删除hadoop103中/opt/module/hadoop-3.1.3/wcinput [ovohadoop103 hadoop-3.1.3]$ rm -rf wcinput/b同步hadoop102中的/opt/module/hadoop-3.1.3到hadoop103 [ovohadoop102 module]$ rsync -av hadoop-3.1.3/ ovohadoop103:/opt/module/hadoop-3.1.3/3xsync集群分发脚本 1.需求循环复制文件到所有节点的相同目录下 2.需求分析 arsync命令原始拷贝 rsync -av /opt/module ovohadoop103:/opt/b期望脚本xsync要同步的文件名称 c期望脚本在任何路径都能使用脚本放在声明了全局环境变量的路径 [ovohadoop102 ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ovo/.local/bin:/home/ovo/bin:/opt/module/jdk1.8.0_212/bin3.脚本实现 a在/home/ovo/bin目录下创建xsync文件 [ovohadoop102 opt]$ cd /home/ovo
[ovohadoop102 ~]$ mkdir bin
[ovohadoop102 ~]$ cd bin
[ovohadoop102 bin]$ vim xsync在该文件中编写如下代码 #!/bin/bash#1. 判断参数个数
if [ $# -lt 1 ]
thenecho Not Enough Arguement!exit;
fi#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
doecho $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 $pdirrsync -av $pdir/$fname $host:$pdirelseecho $file does not exists!fidone
doneb修改脚本 xsync 具有执行权限 [ovohadoop102 bin]$ chmod x xsyncc测试脚本 [ovohadoop102 ~]$ xsync /home/ovo/bind将脚本复制到/bin中以便全局调用 [ovohadoop102 bin]$ sudo cp xsync /bin/e同步环境变量配置root所有者 [ovohadoop102 ~]$ sudo ./bin/xsync /etc/profile.d/my_env.sh注意如果用了sudo那么xsync一定要给它的路径补全。 让环境变量生效 [ovohadoop103 bin]$ source /etc/profile
[ovohadoop104 opt]$ source /etc/profile2.2.3 SSH无密登录配置
1配置ssh 1.基本语法ssh 另一台电脑的主机名 2.ssh连接时出现Host key verification failed的解决方法 [ovohadoop102 ~]$ ssh hadoop103如果出现如下内容 Are you sure you want to continue connecting (yes/no)? 输入yes并回车 3.退回到hadoop102 [ovohadoop103 ~]$ exit2无密钥配置 1.免密登录原理 2.生成公钥和私钥 [ovohadoop102 .ssh]$ pwd
/home/ovo/.ssh[ovohadoop102 .ssh]$ ssh-keygen -t rsa然后敲三个回车就会生成两个文件id_rsa私钥、id_rsa.pub公钥 3.将公钥拷贝到要免密登录的目标机器上 [ovohadoop102 .ssh]$ ssh-copy-id hadoop102
[ovohadoop102 .ssh]$ ssh-copy-id hadoop103
[ovohadoop102 .ssh]$ ssh-copy-id hadoop104注意 还需要在hadoop103上采用ovo账号配置一下无密登录到hadoop102、hadoop103、hadoop104服务器上。还需要在hadoop104上采用ovo账号配置一下无密登录到hadoop102、hadoop103、hadoop104服务器上。还需要在hadoop102上采用root账号配置一下无密登录到hadoop102、hadoop103、hadoop104
2.2.4 集群配置
1集群部署规划
注意
NameNode 和 SecondaryNameNode不要安装在同一台服务器ResourceManager也很消耗内存不要和NameNode、SecondaryNameNode配置在同一台机器上。
2配置文件说明
Hadoop配置文件分两类默认配置文件和自定义配置文件只有用户想修改某一默认配置值时才需要修改自定义配置文件更改相应属性值。
默认配置文件 自定义配置文件core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上用户可以根据项目需求重新进行修改配置。
3配置集群 1.核心配置文件core-site.xml [ovohadoop102 ~]$ cd $HADOOP_HOME/etc/hadoop
[ovohadoop102 hadoop]$ vim core-site.xml文件内容如下 ?xml version1.0 encodingUTF-8?
?xml-stylesheet typetext/xsl hrefconfiguration.xsl?configuration!-- 指定NameNode的地址 --propertynamefs.defaultFS/namevaluehdfs://hadoop102:8020/value/property!-- 指定hadoop数据的存储目录 --propertynamehadoop.tmp.dir/namevalue/opt/module/hadoop-3.1.3/data/value/property!-- 配置HDFS网页登录使用的静态用户为ovo --propertynamehadoop.http.staticuser.user/namevalueovo/value/property
/configuration2.HDFS配置文件hdfs-site.xml [ovohadoop102 hadoop]$ vim hdfs-site.xml文件内容如下 ?xml version1.0 encodingUTF-8?
?xml-stylesheet typetext/xsl hrefconfiguration.xsl?configuration!-- nn web端访问地址--propertynamedfs.namenode.http-address/namevaluehadoop102:9870/value/property!-- 2nn web端访问地址--propertynamedfs.namenode.secondary.http-address/namevaluehadoop104:9868/value/property
/configuration3.YARN配置文件yarn-site.xml [ovohadoop102 hadoop]$ vim yarn-site.xml文件内容如下 ?xml version1.0 encodingUTF-8?
?xml-stylesheet typetext/xsl hrefconfiguration.xsl?configuration!-- 指定MR走shuffle --propertynameyarn.nodemanager.aux-services/namevaluemapreduce_shuffle/value/property!-- 指定ResourceManager的地址--propertynameyarn.resourcemanager.hostname/namevaluehadoop103/value/property!-- 环境变量的继承 --propertynameyarn.nodemanager.env-whitelist/namevalueJAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME/value/property
/configuration4.MapReduce配置文件mapred-site.xml [ovohadoop102 hadoop]$ vim mapred-site.xml文件内容如下 ?xml version1.0 encodingUTF-8?
?xml-stylesheet typetext/xsl hrefconfiguration.xsl?configuration!-- 指定MapReduce程序运行在Yarn上 --propertynamemapreduce.framework.name/namevalueyarn/value/property
/configuration4在集群上分发配置好的Hadoop配置文件
[ovohadoop102 hadoop]$ xsync /opt/module/hadoop-3.1.3/etc/hadoop/5去103和104上查看文件分发情况
[ovohadoop103 ~]$ cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml
[ovohadoop104 ~]$ cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml2.2.5 群起集群
1配置workers
[ovohadoop102 hadoop]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/workers在该文件中增加如下内容
hadoop102
hadoop103
hadoop104注意该文件中添加的内容结尾不允许有空格文件中不允许有空行。
同步所有节点配置文件
[ovohadoop102 hadoop]$ xsync /opt/module/hadoop-3.1.3/etc2启动集群 1.如果集群是第一次启动需要在hadoop102节点格式化NameNode 注意格式化NameNode会产生新的集群id导致NameNode和DataNode的集群id不一致集群找不到已往数据。 重点如果集群在运行过程中报错需要重新格式化NameNode的话一定要先停止namenode和datanode进程并且要删除所有机器的data和logs目录然后再进行格式化。 [ovohadoop102 hadoop-3.1.3]$ hdfs namenode -format2.启动HDFS [ovohadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh3.在配置了ResourceManager的节点注意hadoop103上启动YARN [ovohadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh4.Web端查看HDFS的NameNode a浏览器中输入http://hadoop102:9870 b查看HDFS上存储的数据信息 5.Web端查看YARN的ResourceManager a浏览器中输入http://hadoop103:8088 b查看YARN上运行的Job信息
2.2.6 配置历史服务器 为了查看程序的历史运行情况集群重新格式化后访问之前的数据需要配置一下历史服务器。具体配置步骤如下 1配置mapred-site.xml
[ovohadoop102 hadoop]$ vim mapred-site.xml在该文件里面增加如下配置。
!-- 历史服务器端地址 --
propertynamemapreduce.jobhistory.address/namevaluehadoop102:10020/value
/property!-- 历史服务器web端地址 --
propertynamemapreduce.jobhistory.webapp.address/namevaluehadoop102:19888/value
/property2分发配置
[ovohadoop102 hadoop]$ xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml3在hadoop102启动历史服务器
[ovohadoop102 hadoop]$ mapred --daemon start historyserver4查看历史服务器是否启动
[ovohadoop102 hadoop]$ jps5查看JobHistoryhttp://hadoop102:19888/jobhistory
2.2.7 配置日志的聚集 日志聚集概念应用运行完成以后将程序运行日志信息上传到HDFS系统上。 日志聚集功能好处可以方便的查看到程序运行详情方便开发调试。
注意开启日志聚集功能需要重新启动NodeManager 、ResourceManager和HistoryServer。
开启日志聚集功能具体步骤如下
1配置yarn-site.xml
[ovohadoop102 hadoop]$ vim yarn-site.xml在该文件里面增加如下配置。
!-- 开启日志聚集功能 --
propertynameyarn.log-aggregation-enable/namevaluetrue/value
/property
!-- 设置日志聚集服务器地址 --
property nameyarn.log.server.url/name valuehttp://hadoop102:19888/jobhistory/logs/value
/property
!-- 设置日志保留时间为7天 --
propertynameyarn.log-aggregation.retain-seconds/namevalue604800/value
/property2分发配置
[ovohadoop102 hadoop]$ xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml3关闭NodeManager 、ResourceManager和HistoryServer
[ovohadoop103 hadoop-3.1.3]$ sbin/stop-yarn.sh
[ovohadoop102 hadoop-3.1.3]$ mapred --daemon stop historyserver4启动NodeManager 、ResourceManage和HistoryServer
[ovohadoop103 ~]$ start-yarn.sh
[ovohadoop102 ~]$ mapred --daemon start historyserver5删除HDFS上已经存在的输出文件
[ovohadoop102 ~]$ hadoop fs -rm -r /output6执行WordCount程序路径写自己任意一个文件路径
[ovohadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output7查看日志
1.历史服务器地址http://hadoop102:19888/jobhistory2.历史任务列表3.查看任务运行日志4.运行日志详情
2.2.8 集群启动/停止方式总结
1各个模块分开启动/停止配置ssh是前提常用 1.整体启动/停止HDFS start-dfs.sh/stop-dfs.sh2.整体启动/停止YARN start-yarn.sh/stop-yarn.sh2各个服务组件逐一启动/停止 1.分别启动/停止HDFS组件 hdfs --daemon start/stop namenode/datanode/secondarynamenode2.启动/停止YARN yarn --daemon start/stop resourcemanager/nodemanager2.2.9 编写Hadoop集群常用脚本
1Hadoop集群启停脚本包含HDFSYarnHistoryservermyhadoop.sh
[ovohadoop102 ~]$ cd /home/ovo/bin
[ovohadoop102 bin]$ vim myhadoop.sh输入如下内容
#!/bin/bashif [ $# -lt 1 ]
thenecho No Args Input...exit ;
ficase $1 in
start)echo 启动 hadoop集群 echo --------------- 启动 hdfs ---------------ssh hadoop102 /opt/module/hadoop-3.1.3/sbin/start-dfs.shecho --------------- 启动 yarn ---------------ssh hadoop103 /opt/module/hadoop-3.1.3/sbin/start-yarn.shecho --------------- 启动 historyserver ---------------ssh hadoop102 /opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver
;;
stop)echo 关闭 hadoop集群 echo --------------- 关闭 historyserver ---------------ssh hadoop102 /opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserverecho --------------- 关闭 yarn ---------------ssh hadoop103 /opt/module/hadoop-3.1.3/sbin/stop-yarn.shecho --------------- 关闭 hdfs ---------------ssh hadoop102 /opt/module/hadoop-3.1.3/sbin/stop-dfs.sh
;;
*)echo Input Args Error...
;;
esac保存后退出然后赋予脚本执行权限
[ovohadoop102 bin]$ chmod x myhadoop.sh2查看三台服务器Java进程脚本jpsall
[ovohadoop102 ~]$ cd /home/ovo/bin
[ovohadoop102 bin]$ vim jpsall输入如下内容
#!/bin/bashfor host in hadoop102 hadoop103 hadoop104
doecho $host ssh $host jps
done保存后退出然后赋予脚本执行权限
[ovohadoop102 bin]$ chmod x jpsall3分发/home/ovo/bin目录保证自定义脚本在三台机器上都可以使用
[ovohadoop102 ~]$ xsync /home/ovo/bin/2.2.10 集群时间同步
如果服务器在公网环境能连接外网可以不采用集群时间同步因为服务器会定期和公网时间进行校准
如果服务器在内网环境必须要配置集群时间同步否则时间久了会产生时间偏差导致集群执行任务时间不同步。
1需求
找一个机器作为时间服务器所有的机器与这台集群时间进行定时的同步生产环境根据任务对时间的准确程度要求周期同步。测试环境为了尽快看到效果采用1分钟同步一次。
2时间服务器配置必须root用户 1.查看所有节点ntpd服务状态和开机自启动状态 [ovohadoop102 ~]$ sudo systemctl status ntpd
[ovohadoop102 ~]$ sudo systemctl start ntpd
[ovohadoop102 ~]$ sudo systemctl is-enabled ntpd2.修改hadoop102的ntp.conf配置文件 [ovohadoop102 ~]$ sudo vim /etc/ntp.conf修改内容如下 a修改1授权192.168.10.0-192.168.10.255网段上的所有机器可以从这台机器上查询和同步时间 #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap为去掉了#号改成了192.168.10.0 restrict 192.168.10.0 mask 255.255.255.0 nomodify notrapb修改2集群在局域网中不使用其他互联网上的时间 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 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 iburstc添加3当该节点丢失网络连接依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步 server 127.127.1.0
fudge 127.127.1.0 stratum 103.修改hadoop102的/etc/sysconfig/ntpd 文件 [ovohadoop102 ~]$ sudo vim /etc/sysconfig/ntpd增加内容如下让硬件时间与系统时间一起同步 SYNC_HWCLOCKyes4.重新启动ntpd服务 [ovohadoop102 ~]$ sudo systemctl start ntpd5.设置ntpd服务开机启动 [ovohadoop102 ~]$ sudo systemctl enable ntpd3其他机器配置必须root用户 1.关闭所有节点上ntp服务和自启动 [ovohadoop103 ~]$ sudo systemctl stop ntpd
[ovohadoop103 ~]$ sudo systemctl disable ntpd
[ovohadoop104 ~]$ sudo systemctl stop ntpd
[ovohadoop104 ~]$ sudo systemctl disable ntpd2.在其他机器配置1分钟与时间服务器同步一次 [ovohadoop103 ~]$ sudo crontab -e编写定时任务如下 */1 * * * * /usr/sbin/ntpdate hadoop1023.修改任意机器时间 [ovohadoop103 ~]$ sudo date -s 2022-9-11 11:11:114.1分钟后查看机器是否与时间服务器同步 [ovohadoop103 ~]$ sudo date2.2.11 常考面试题
1常用端口号
端口名称Hadoop2.xhadoop3.xHDFS NameNode 内部通信端口8020/90008020/9000/9820HDFS NameNode 对用户的查询端口500709870Yran 查看查看任务运行情况端口80888088历史服务器通信端口19888198882常用配置文件hadoop2.xcore-site.xmlhadfs-size.xml–––hadoop3.xcore-site.xmlhadfs-size.xml