千库网网页版登录官网,seo系统优化,网站建设方案百度文库,网站建设和维护合同目录 1 本地模式2 伪分布式模式3 完全分布式模式3.1 准备3台客户机3.2 同步分发内容3.2.1 分发命令3.2.2 执行分发操作 3.3 集群配置3.3.1 集群部署规划3.3.2 配置文件说明3.3.3 修改配置文件3.3.4 分发配置信息 3.4 SSH无密登录配置3.4.1 配置ssh3.4.2 无密钥配置 3.5 单点启动… 目录 1 本地模式2 伪分布式模式3 完全分布式模式3.1 准备3台客户机3.2 同步分发内容3.2.1 分发命令3.2.2 执行分发操作 3.3 集群配置3.3.1 集群部署规划3.3.2 配置文件说明3.3.3 修改配置文件3.3.4 分发配置信息 3.4 SSH无密登录配置3.4.1 配置ssh3.4.2 无密钥配置 3.5 单点启动集群3.5.1 启动 HDFS 集群3.5.2 启动 YARN 集群 3.6 群起集群3.6.1 配置workers3.6.2 启动集群3.6.3 测试集群 3.7 配置历史服务器3.8 配置日志的聚集 Hadoop官方网站 Hadoop运行模式包括 本地模式 hadoop默认安装后启动就是本地模式就是将来的数据存在Linux本地并且运行MR程序的时候也是在本地机器上运行 伪分布式模式其实就只在一台机器上启动HDFS集群启动YARN集群并且数据存在HDFS集群上以及运行MR程序也是在YARN上运行计算后的结果也是输出到HDFS上。本质上就是利用一台服务器中多个java进程去模拟多个服务 完全分布式模式完全分布式其实就是多台机器上分别启动HDFS集群启动YARN集群并且数据存在HDFS集群上的以及运行MR程序也是在YARN上运行计算后的结果也是输出到HDFS上。 1 本地模式 官方 wordcount 统计单词的个数示例
创建在 hadoop-3.1.3 文件下面创建一个 wcinput 文件夹
[huweihadoop101 hadoop-3.1.3]$ mkdir wcinput在 wcinput 文件下创建一个word.txt文件并编辑内容
[huweihadoop101 hadoop-3.1.3]$ cd wcinput
[huweihadoop101 wcinput]$ vim word.txt在文件中输入如下内容
hadoop yarn
hadoop mapreduce
huwei
huwei保存退出:wq
执行程序
[huweihadoop101 wcinput]$ cd /opt/module/hadoop-3.1.3
[huweihadoop101 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput wcoutput输出文件夹wcoutput不需要提前创建 查看结果
[huweihadoop101 hadoop-3.1.3]$ ll
[huweihadoop101 hadoop-3.1.3]$ cd wcoutput/[huweihadoop101 wcoutput]$ cat part-r-000002 伪分布式模式 可参考笔者之前写的博客 Centos6下安装伪分布式hadoop
3 完全分布式模式
3.1 准备3台客户机 由笔者上一篇博客 大数据技术学习笔记二—— Hadoop运行环境的搭建 可知我们已由模版机hadoop100 克隆了 hadoop101并在hadoop101成功安装配置了 jdk 和 hadoop。 现在我们再由模版机 hadoop100 创建克隆 hadoop102、hadoop103我们对这两台新克隆的机器同样进行 修改IP地址、修改主机名 操作。仍可参考上一篇博客中对 hadoop101 的修改
3.2 同步分发内容 我们已经在hadoop101成功安装配置了 jdk 和 hadoop为避免再次在 hadoop102、hadoop103安装配置 jdk 和 hadoop带来的麻烦我们可以通过将 hadoop101 安装配置的 jdk 和 hadoop同步分发给hadoop102、hadoop103的方式简化操作步骤。 3.2.1 分发命令 scp
scpsecure copy安全拷贝scp可以实现服务器与服务器之间的数据拷贝。from server1 to server2。
基本语法
scp -r $pdir/$fname $userhadoop$host:$pdir/$fname
命令 递归 要拷贝的文件路径/名称 目的用户主机:目的路径/名称rsync
rsync 主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync 和 scp 区别用 rsync 做文件的复制要比 scp 的速度快 rsync 只对差异文件做更新。scp是把所有文件都复制过去。
基本语法
rsync -av $pdir/$fname $userhadoop$host:$pdir/$fname
命令 选项参数 要拷贝的文件路径/名称 目的用户主机:目的路径/名称选项参数说明
-a 归档拷贝-v 显示复制过程
编写集群分发脚本 xsync 说明在 /home/huwei/bin 这个目录下存放的脚本huwei用户可以在系统任何地方直接执行。 在 /home/huwei/bin 目录下创建 xsync 文件
[huweihadoop101 ~]$ cd /home/huwei
[huweihadoop101 ~]$ mkdir bin
[huweihadoop101 ~]$ cd bin
[huweihadoop101 bin]$ vim xsync在该文件中编写如下代码
fi
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
thenecho Not Enough Arguement!exit;
fi
#2. 遍历集群所有机器
for host in hadoop101 hadoop102 hadoop103
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 $pdirrsync -av $pdir/$fname $host:$pdirelseecho $file does not exists!fidone
done修改脚本 xsync 具有执行权限
[huweihadoop101 bin]$ chmod x xsync将脚本复制到 /bin 中以便全局调用
[huweihadoop101 bin]$ sudo cp xsync /bin/测试脚本将/home/huwei/bin分发给其他机器
[huweihadoop101 ~] xsync /home/huwei/bin3.2.2 执行分发操作 将 hadoop101 安装配置的 jdk 和 hadoop 同步分发给 hadoop102
[huweihadoop101 ~]$ scp -r /opt/module/* huweihadoop102:/opt/module/注意两台主机首次通信时需要确认键入yes后续通信则不需要 为 拓展 scp 的用法我们尝试在 hadoop103上向 hadoop101上主动拉取 jdk
[huweihadoop103 ~]$ scp -r huweihadoop101:/opt/module/jdk1.8.0_212 /opt/module/在 hadoop102 上将 hadoop101 的 hadoop 发送给 hadoop103该操作 rsync 不支持
[huweihadoop102 ~]$ scp -r huweihadoop101:/opt/module/hadoop-3.1.3 huweihadoop103:/opt/module/此时hadoop102、hadoop103 上都有了 jdk 和 hadoop下面需要将 jdk 和 hadoop 的环境变量也分发过去。 此时注意要使用 scp 将环境变量分发给 hadoop102、hadoop103时hadoop102、hadoop103必须要 root 用户登录因为只有 root 用户才有在 /etc/profile.d文件夹下写的权限 [huweihadoop101 ~]$ cd /etc/profile.d
[huweihadoop101 profile.d]$ scp -r ./my_env.sh roothadoop102:/etc/profile.d/
[huweihadoop101 profile.d]$ scp -r ./my_env.sh roothadoop103:/etc/profile.d/使得 hadoop102、hadoop103下的环境变量生效
[huweihadoop102 ~]$ source /etc/profile
[huweihadoop103 ~]$ source /etc/profile然后可分别在 hadoop102、hadoop103下进行测试java -version、hadoop version
3.3 集群配置
3.3.1 集群部署规划 注意 NameNode 和 SecondaryNameNode不要安装在同一台服务器ResourceManager 也很消耗内存不要和 NameNode、SecondaryNameNode 配置在同一台机器上。 3.3.2 配置文件说明 Hadoop配置文件分两类默认配置文件和自定义配置文件只有用户想修改某一默认配置值时才需要修改自定义配置文件更改相应属性值。当Hadoop集群启动后先加载默认配置然后再加载自定义配置文件自定义的配置信息会覆盖默认配置。
hadoop 的默认配置文件
core-default.xmlhdfs-default.xmlmapread-default.xmlyarn-default.xml
hadoop提供可自定义的配置文件
core-site.xmlhdfs-site.xmlmapread-site.xmlyarn-site.xml
3.3.3 修改配置文件 核心配置文件
[huweihadoop101 ~]$ cd $HADOOP_HOME/etc/hadoop
[huweihadoop101 hadoop]$ vim core-site.xml文件内容如下
?xml version1.0 encodingUTF-8?
?xml-stylesheet typetext/xsl hrefconfiguration.xsl?configuration!-- 指定NameNode的地址 --propertynamefs.defaultFS/namevaluehdfs://hadoop101:9820/value/property
!-- 指定hadoop数据的存储目录 --propertynamehadoop.tmp.dir/namevalue/opt/module/hadoop-3.1.3/data/value/property!-- 配置HDFS网页登录使用的静态用户为huwei --propertynamehadoop.http.staticuser.user/namevaluehuwei/value/property!-- 配置该huwei(superUser)允许通过代理访问的主机节点 --propertynamehadoop.proxyuser.huwei.hosts/namevalue*/value/property
!-- 配置该huwei(superUser)允许通过代理用户所属组 --propertynamehadoop.proxyuser.huwei.groups/namevalue*/value/property
!-- 配置该huwei(superUser)允许通过代理的用户--propertynamehadoop.proxyuser.huwei.groups/namevalue*/value/property/configurationHDFS配置文件
[huweihadoop101 hadoop]$ vim hdfs-site.xml文件内容如下
?xml version1.0 encodingUTF-8?
?xml-stylesheet typetext/xsl hrefconfiguration.xsl?configuration!-- nn web端访问地址--propertynamedfs.namenode.http-address/namevaluehadoop101:9870/value/property!-- 2nn web端访问地址--propertynamedfs.namenode.secondary.http-address/namevaluehadoop103:9868/value/property
/configurationYARN配置文件
[huweihadoop101 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/namevaluehadoop102/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
!-- yarn容器允许分配的最大最小内存 --propertynameyarn.scheduler.minimum-allocation-mb/namevalue512/value/propertypropertynameyarn.scheduler.maximum-allocation-mb/namevalue4096/value/property
!-- yarn容器允许管理的物理内存大小 --propertynameyarn.nodemanager.resource.memory-mb/namevalue4096/value/property
!-- 关闭yarn对物理内存和虚拟内存的限制检查 --propertynameyarn.nodemanager.pmem-check-enabled/namevaluefalse/value/propertypropertynameyarn.nodemanager.vmem-check-enabled/namevaluefalse/value/property
/configurationMapReduce配置文件
[huweihadoop101 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
/configuration3.3.4 分发配置信息 [huweihadoop101 ~]$ xsync /opt/module/hadoop-3.1.3/etc/hadoop/3.4 SSH无密登录配置
3.4.1 配置ssh ssh 基本语法
ssh 另一台主机的主机名/ip地址例如我们在 hadoop101 上登录 hadoop102可以看到我们必须输入hadoop102的登录密码 输入exit登出
我们在操作的过程中少不了各台机器之间的通信如果总是输入密码会很麻烦所以我们要进行免密配置
3.4.2 无密钥配置 免密登录原理 生成公钥和私钥
[huweihadoop101 ~]$ ssh-keygen -t rsa然后敲三个回车就会生成两个文件 id_rsa私钥、id_rsa.pub公钥 查看生成的私钥、公钥的存放位置
[huweihadoop101 ~]$ cd /home/huwei/.ssh/
[huweihadoop101 .ssh]$ ll.ssh文件夹下~/.ssh的文件功能解释 将公钥拷贝到要免密登录的目标机器上授权
[huweihadoop101 .ssh]$ ssh-copy-id hadoop101
[huweihadoop101 .ssh]$ ssh-copy-id hadoop102
[huweihadoop101 .ssh]$ ssh-copy-id hadoop103以上步骤 2、3 的工作也要在 hadoop102、hadoop103 走一遍。
此时三台主机两两之间即可实现免密登录。
3.5 单点启动集群
3.5.1 启动 HDFS 集群 格式化
如果集群是第一次启动才需要在hadoop101 节点 格式化 NameNode注意格式化NameNode会产生新的集群id导致NameNode和DataNode的集群id不一致集群找不到已往数据。如果集群在运行过程中报错需要重新格式化NameNode的话一定要先停止namenode和datanode进程并且要删除所有机器的 data 和 logs 目录然后再进行格式化。
[huweihadoop101 hadoop-3.1.3]$ hdfs namenode -format启动 namenode
hadoop101 启动 namenode
hdfs --daemon start namenode使用 jps 命令查看当前进程 Web 端查看 HDFS 的 NameNode
浏览器中输入http://hadoop101:9870查看HDFS上存储的数据信息 启动 datanode
hadoop101 hadoop102 hadoop103 分别启动 datanode
[huweihadoop101 ~]$ hdfs --daemon start datanode
[huweihadoop102 ~]$ hdfs --daemon start datanode
[huweihadoop103 ~]$ hdfs --daemon start datanode此时查看 web 端 启动 secondarynamenode hadoop103 启动secondarynamenode
[huweihadoop103 ~]$ hdfs --daemon start secondarynamenodejps 查看进程 Web端查看 HDFS 的 secondarynamenode并没有什么东东
浏览器中输入http://hadoop103:9868
3.5.2 启动 YARN 集群 启动 resourcemanager
hadoop102 启动 resourcemanager
[huweihadoop102 ~]$ yarn --daemon start resourcemanager启动 nodemanager
hadoop101、 hadoop102、 hadoop103 分别启动 nodemanager
[huweihadoop101 ~]$ yarn --daemon start nodemanager
[huweihadoop102 ~]$ yarn --daemon start nodemanager
[huweihadoop103 ~]$ yarn --daemon start nodemanagerWeb端查看YARN的ResourceManager
浏览器中输入http://hadoop102:8088查看YARN上运行的Job信息 jps 查看各主机上的进程 关于关闭集群同上述启动集群的命令只需将 start 修改为 stop 即可 3.6 群起集群
3.6.1 配置workers 当执行群启/群停脚本的时候首先会解析 etc/hadoop/workers解析到的内容都是每一台机器的地址脚本会自动执行在每一台机器上启动 dn、nm。 [huweihadoop101 ~]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/workers在该文件中增加如下内容
hadoop101
hadoop102
hadoop103注意该文件中添加的内容结尾不允许有空格文件中不允许有空行。 同步所有节点配置文件
[huweihadoop101 ~]$ xsync /opt/module/hadoop-3.1.3/etc/hadoop/workers3.6.2 启动集群 启动 HDFS
在配置了 NameNode 的节点hadoop101启动HDFS
[huweihadoop101 ~]$ start-dfs.sh启动 YARN
在配置了 ResourceManager 的节点hadoop102启动YARN
[huweihadoop102 ~]$ start-yarn.sh注意 关闭集群同上述命令只需将 start 修改为 stop 即可hadoop本身也给我们提供了start-all.sh可以实现一次性启动HDFS和YARN但是这个命令也会额外的启动别的进程这样会比较耗费服务器资源。 3.6.3 测试集群 在HDFS的web 界面打开HDFS的文件系统 在HDFS文件系统中手动创建 wcinput 文件夹并在 wcinput 文件夹下手动上传hello.txt文件 执行 wordcount 程序
[huweihadoop101 ~]$ cd /opt/module/hadoop-3.1.3
[huweihadoop101 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /wcinput /wcoutput可以看到 3.7 配置历史服务器 历史服务器是针对MR程序执行的历史记录当集群关闭重启后Web端查看YARN找不到程序执行的历史记录了为了查看程序的历史运行情况需要配置一下历史服务器。
[huweihadoop101 ~]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/mapred-site.xml在该文件里面增加如下配置
!-- 历史服务器端地址哪台主机都可 --
propertynamemapreduce.jobhistory.address/namevaluehadoop101:10020/value
/property!-- 历史服务器web端地址 --
propertynamemapreduce.jobhistory.webapp.address/namevaluehadoop101:19888/value
/property分发配置
[huweihadoop101 ~]$ xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml在hadoop101 启动历史服务器
[huweihadoop101 ~]$ mapred --daemon start historyserver查看历史服务器是否启动 web 端查看 JobHistory
浏览器中输入http://hadoop101:19888/jobhistory
3.8 配置日志的聚集 日志是针对 MR 程序运行是所产生的的日志配置日志的聚集方便后期分析问题有更好的执行过过程的依据。
应用运行完成以后将程序运行日志信息上传到HDFS系统上。配置日志聚集可以方便的查看到程序运行详情方便开发调试。
[huweihadoop101 ~]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml在该文件里面增加如下配置
!-- 开启日志聚集功能 --
propertynameyarn.log-aggregation-enable/namevaluetrue/value
/property
!-- 设置日志聚集服务器地址 --
property nameyarn.log.server.url/name valuehttp://hadoop101:19888/jobhistory/logs/value
/property
!-- 设置日志保留时间为7天 --
propertynameyarn.log-aggregation.retain-seconds/namevalue604800/value
/property注意开启日志聚集功能需要重新启动 NodeManager 、ResourceManager 和HistoryServer。 分发配置
[huweihadoop101 ~]$ xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml关闭 NodeManager 、ResourceManager和HistoryServer
[huweihadoop102 ~]$ stop-yarn.sh
[huweihadoop101 ~]$ mapred --daemon stop historyserver开启 NodeManager 、ResourceManager和HistoryServer
[huweihadoop102 ~]$ start-yarn.sh
[huweihadoop101 ~]$ mapred --daemon start historyserver现在去看 HistoryServer 此时仍然看不到日志是怎么回事呢 其实是因为我们当时执行程序的时候并没有开启日志聚集现在我们开启了日志聚集功能那么重新执行程序 删除HDFS上已经存在的输出文件
[huweihadoop101 ~]$ hadoop fs -rm -r /wcoutput执行WordCount程序
[huweihadoop101 wcinput]$ cd /opt/module/hadoop-3.1.3
[huweihadoop101 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput wcoutput现在去看 HistoryServer 可以看到日志了。