IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> hadoop_2分布式搭建及日志、历史服务搭建 -> 正文阅读

[大数据]hadoop_2分布式搭建及日志、历史服务搭建


目标:
1 本地模式
2 分布式搭建
3 集群测试

hadoop运行模式

1 本地模式

1.1 hadoop官网运行测试

	mkdir input
 	$ cp etc/hadoop/*.xml input
	[atguigu@localhost hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input output 'dfs[a-z.]+'

记住:1 位置很重要,进入hadoop-3.1.3文件下进行操作,要是再别的位置,则需要改变相应的位置
2 hadoop的grep 不是linux的grep ,两个意思 。
3 该代码是将input的查找数据输出到output中,再output中的part-r-0000中可以看到查询的具体数据
4 将grep 换成wordcount,可以计算文件里面的单词个数

在这里插入图片描述在这里插入图片描述

1.2 图形化的虚拟机需要卸载自带的openJDK

在这里插入图片描述

2 分布式搭建

2.1 要求 模拟准备3台虚拟机

在这里插入图片描述

2.2 scp安全拷贝

语法:scp -r  资源文件   目标文件
1 scp test.txt atguitu@192.168.40.103: /opt/software
	将当前机器位置下的test.txt 拷贝到103的机器中,
	存放在	opt/software里面
2 scp  -r  aa atguitu@192.168.40.104: /opt/software
	将当前机器位置下的aa文件 拷贝到104的机器中,
	存放在	opt/software里面

2.3 rsync 远程同步工具

在这里插入图片描述

	rsync -av test.txt atguigu@192.168.40.104: /opt/software

2.4 集群规划

1 理论规划:
	1)HDFS:NameNode,DataNode,secondryNode
	2) Yarn:ResourceManager,NodeManager
	3) NameNode,secondryNode,ResourceManager对资源的消耗比较大,应该分别部署在三台机器上
	4)按照hadoop官方默认的3个副本说明,最少需要3个dataNode节点,也就是3台机器
	5)nodeManager 主要管理的dataNode节点,因此nodeManager和dataNode要在一台服务器上,(每一个dataNode都有与其对应的nodeManager)
	6)理论上集群最少需要6台机器
2 实际情况:
	现有机器:
	102:dataNode  nodeManager  nameNode
	103:dataNode  nodeManager resourceManager
	104:dataNode  nodeManager secondryNode

2.4.1配置文件

在这里插入图片描述

2.4.2 配置集群

1 核心配置文件
配置core-site.xml
cd /opt/module/hadoop-3.1.3/etc/hadoop
vim core-site.xml
文件内容如下:

<!--指定NameNode的节点-->
<property>
     <name>fs.defaultFS</name>
     <value>hdfs://192.168.40.102:8020</value>
</property>

<!--指定hadoop数据的存储目录  
  官方配置文件中的配置项是hadoop.tmp.dir
,用来指定hadoop数据的存储目录,此次配置用的hadoop.data.dir是
自己定义的变量, 因为在hdfs-site.xml中会使用此配置的值来
具体指定namenode和datanode存储数据的目录-->
<property>
    <name>hadoop.data.dir</name>
    <value>/opt/module/hadoop-3.1.3/data</value>
</property>

<!-- 下面是兼容性配置,先跳过 -->
<!-- 配置该caron(superUser)允许通过代理访问的主机节点 -->
<property>
   <name>hadoop.proxyuser.caron.hosts</name>
   <value>*</value>
</property>

<!-- 配置该caron(superuser)允许代理的用户所属组 -->
<property>
    <name>hadoop.proxyuser.caron.groups</name>
    <value>*</value>
</property>

<!-- 配置该caron(superuser)允许代理的用户-->
<property>
    <name>hadoop.proxyuser.caron.users</name>
    <value>*</value>
</property>

2 HDFS配置文件
配置hdfs-site.xml
vim hdfs-site.xml
文件内容如下:
<!-- 指定副本数-->
<property>
  <name>dfs.replication</name>
  <value>3</value>
</property>

<!-- 指定NameNode数据的存储目录-->
<property>
  <name>dfs.namenode.name.dir</name>
  <value>file://${hadoop.data.dir}/name</value>
</property>
<!--指定Datanode数据的存储目录-->
<property>
  <name>dfs.datanode.data.dir</name>
  <name>dfs.replication</name>
  <value>3</value>
</property>

<!-- 指定NameNode数据的存储目录-->
<property>
  <name>dfs.namenode.name.dir</name>
  <value>file://${hadoop.data.dir}/name</value>
</property>
<!--指定Datanode数据的存储目录-->
<property>
  <name>dfs.datanode.data.dir</name>
  <value>file://${hadoop.data.dir}/data</value>
</property>
<!--指定SecondaryNameNode数据的存储目录-->
<property>
  <name>dfs.namenode.checkpoint.dir</name>
  <value>file://${hadoop.data.dir}/namesecondary</value>
</property>
<!-- 兼容配置,先跳过 -->
<property>
  <name>dfs.client.datanode-restart.timeout</name>
  <value>30s</value>
</property>
<!-- nn web端访问地址-->
<property>
  <name>dfs.namenode.http-address</name>
  <value>192.168.40.102:9870</value>
</property>
<!-- 2nn web端访问地址-->
<property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>192.168.40.104:9868</value>
</property>

3 YARN配置文件
配置yarn-site.xml
vim yarn-site.xml
文件内容如下:
    <property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
</property>
<!--指定ResourceManager的地址-->
<property>
  <name>yarn.resourcemanager.hostname</name>
  <value>192.168.40.103</value>
</property>
<!-- 环境变量的继承-->
<property>
  <name>yarn.nodemanager.env-whitelist</name>
  <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<!--取消虚拟内存的限制
<property>
  <name>yarn.nodemanager.vmem-check-enabled</name>
  <value>false</value>
</property>
    -->

4 MapReduce配置文件
配置mapred-site.xml
vim mapred-site.xml
文件内容如下:
  <!--指定MapReduce程序运行在Yarn上-->
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>

2.2.3、在集群上分发配置好的hadoop

xsync集群分发脚本之前需要创建脚本
(a)在/home/atguigu目录下创建bin目录,并在bin目录下创建xsync文件

[atguigu@hadoop102 hadoop] cd /home/caron
[atguigu@hadoop102 ~] mkdir  bin 
[atguigu@hadoop102 bin] touch xsync
[atguigu@hadoop102 bin] vim xsync

在该文件中编写如下代码

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
  echo Not Enough Arguement!
  exit;
fi
#2. 遍历集群所有机器
for host in 192.168.40.102 192.168.40.103 192.168.40.104
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

(b)修改脚本 xsync 具有执行权限

chmod +x xsync

(d)测试脚本

xsync /home/caron/xsync

分发配置命令:

xsync /opt/module/hadoop-3.1.3/etc/hadoop

2.4.4、集群单点启动

(1)如果集群是第一次启动,在102机器需要格式化NameNode

hdfs namenode -format

(2)在hadoop102上启动NameNode

hdfs --daemon start namenode

完成后执行jps命令,看到如下结果(进程号可能不同):

3461 NameNode

(3)在hadoop102、hadoop103以及hadoop104上执行如下命令(三台都要执行)

hdfs --daemon start datanode

(4)在Hadoop104上执行如下命令

hdfs --daemon start secondarynamenode

(5)web界面查看

http://192.168.40.102:9870/
http://192.168.40.103:8088/

(6)在hadoop103上执行如下命令

yarn --daemon start resourcemanager

(7)在hadoop102、hadoop103以及hadoop104上执行如下命令(三台都要执行)

yarn --daemon start nodemanager

2.4.5 格式化需要注意的问题

格式化NameNode,会产生新的集群id(clusterID),导致DataNode中记录的集群
id(clusterID)和 NameNode中的集群id不一致,DataNode找不到NameNode
所以,格式NameNode的时候,一定要删除每个节点的data目录和log日志,
然后再格式化NameNode

2.4.6 出问题看日志

1 明确在哪台机器出的问题
2 看日志:tail -n 300  ***.log   看最新的300行数据

2.4.7 ssh免密登录

6.1 分别在102,103,104生成公钥
ssh-keygen -t rsa
然后敲(四个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
6.2 将公钥拷贝到要免密登录的目标机器上
	ssh-copy-id 192.168.40.102
	ssh-copy-id 192.168.40.103
	ssh-copy-id 192.168.40.104
	注意:需要每种账户都配置,才能使用相关账户具有无密登录的权限,目前是用的atguigu设置,就是说在root用户,或者其他用户都没有权限免密登录,除非在重新配置

2.4.8、群起集群

1. 配置workers,要是hadoop2.x中是slaves文件
vim /opt/module/hadoop-3.1.3/etc/hadoop/workers
在该文件中增加如下内容:
192.168.40.102
192.168.40.103
192.168.40.104

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

同步所有节点配置文件

xsync /opt/module/hadoop-3.1.3/etc/hadoop/workers

2.4.9. 启动集群

(1)如果集群是第一次启动,需要在hadoop101节点格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据)

hdfs namenode -format

(2)启动HDFS

start-dfs.sh

(3)在配置了ResourceManager的节点(hadoop102)启动YARN

start-yarn.sh 

2.4.10、集群启动/停止方式总结

  1. 各个服务组件逐一启动/停止

(1)分别启动/停止HDFS组件

hdfs --daemon start/stop namenode/datanode/secondarynamenode

(2)启动/停止YARN

yarn --daemon start/stop  resourcemanager/nodemanager

2.4.11. 各个模块分开启动/停止(配置ssh是前提)常用

(1)整体启动/停止HDFS

start-dfs.sh/stop-dfs.sh

(2)整体启动/停止YARN

start-yarn.sh/stop-yarn.sh

2.4.12 集群的启动和停止脚本 在102机器中 编写mySlavers.sh

#!/bin/bash
if [ $# -lt 1 ];
then
        echo "Input Args is Error !!!"
        exit
fi

case $1 in
start)
        echo "=========start hdfs==========="
        ssh 192.168.40.102 /opt/module/hadoop-3.1.3/sbin/start-dfs.sh
        echo "=========start yarn==========="
        ssh 192.168.40.103 /opt/module/hadoop-3.1.3/sbin/start-yarn.sh
;;
stop)
        echo "=========stop yarn==========="
        ssh 192.168.40.103 /opt/module/hadoop-3.1.3/sbin/stop-yarn.sh
        echo "=========stop hdfs==========="
        ssh 192.168.40.102 /opt/module/hadoop-3.1.3/sbin/stop-dfs.sh
;;
*)
        echo  "Input Args is Error !!!"
;;
esac

2.4.12 查看集群中各个机器进程的脚本,在102中编写myjps.sh脚本

#!/bin/bash
for i in 192.168.40.102 192.168.40.103 192.168.40.104
do
        echo "=============$i JPS================"
        ssh $i /opt/module/jdk1.8.0_301/bin/jps
done

3 集群测试

3.1在HDFS中创建目录,在102机器中

	hadoop fs -mkdir  /input

3.2 上传数据到HDFS

hadoop fs -put  /opt/software/hadoop-3.1.3.tar.gz  /input

注意:上传到HDFS的文件,HDFS是按块大小划分,默认是128M,如果超过128M,将划分多块
在这里插入图片描述在这里插入图片描述

3.3 执行wordcount程序,在102机器上

	hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /wcinput /wcoutput

4 日志、历史服务器搭建

4.1、配置历史服务器

为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:

1. 配置mapred-site.xml
vim mapred-site.xml
在该文件里面增加如下配置。
<!--历史服务器端地址 -->
<property>   
    <name>mapreduce.jobhistory.address</name>
    <value>192.168.40.102:10020</value>
</property>
<!--历史服务器web端地址-->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>192.168.40.102:19888</value>
</property>

2. 分发配置
xsync mapred-site.xml
3. 在102启动历史服务器
	mapred --daemon start historyserver
4. 查看历史服务器是否启动
jps
5. 查看JobHistory
http://192.168.40.102:19888/jobhistory

在这里插入图片描述

4.2、配置日志的聚集

日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上。
日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。
注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryManager。所以为了方便起见,先全部关闭,群停服务   执行./myclusters stop 代码如下
	
#!/bin/bash
if [ $# -lt 1 ];
then
        echo "Input Args is Error !!!"
        exit
fi

case $1 in
start)
        echo "=========start hdfs==========="
        ssh 192.168.40.102 /opt/module/hadoop-3.1.3/sbin/start-dfs.sh
        echo "=========start yarn==========="
        ssh 192.168.40.103 /opt/module/hadoop-3.1.3/sbin/start-yarn.sh
        echo "=========start jobhistory==========="
        ssh 192.168.40.102 /opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver
;;
stop)
        echo "=========stop yarn==========="
        ssh 192.168.40.103 /opt/module/hadoop-3.1.3/sbin/stop-yarn.sh
        echo "=========stop hdfs==========="
        ssh 192.168.40.102 /opt/module/hadoop-3.1.3/sbin/stop-dfs.sh
         echo "=========stop jobhistory==========="
        ssh 192.168.40.102 /opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver
;;
*)
        echo  "Input Args is Error !!!"

;;
esac


开启日志聚集功能具体步骤如下:

1. 配置yarn-site.xml

vim yarn-site.xml
在该文件里面增加如下配置。
<!--是否开启日志聚集功能-->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!--日志聚集web端地址-->
<property>
<name>yarn.log.server.url</name>
<value>http://192.168.40.102:19888/jobhistory/logs</value>
</property>
 <!--日志保存时常 默认7天-->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>

2. 分发配置
xsync yarn-site.xml
3 群起服务
./myclusters start

4.3、集群时间同步

时间服务器配置(必须root用户)
(1)在所有节点关闭ntp服务和自启动

sudo systemctl stop ntpd
sudo systemctl disable ntpd

(2)修改ntp配置文件

sudo vim /etc/ntp.conf

修改内容如下

a)修改1(授权192.168.1.0-192.168.1.255网段上的所有机器可以从这台机器上查询和同步时间)
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
去掉注释  去掉前面的#

b)修改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
全部增加注释 在最前面加#号

c)添加3(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)
server 127.127.1.0
fudge 127.127.1.0 stratum 10

(3)修改/etc/sysconfig/ntpd 文件

sudo vim /etc/sysconfig/ntpd
增加内容如下(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes

Tips:

系统时间:
一般说来就是我们执行date命令看到的时间,linux系统下所有的时间调用(除了直接访问硬件时间的命令)都是使用的这个时间。

硬件时间:
主板上BIOS中的时间,由主板电池供电来维持运行,系统开机时要读取 这个时间,并根据它来设定系统时间(注意:系统启动时根据硬件时间定系统时间的过程可能存在时区换算,这要视具体的系统及相关设置而 定)

(4)重新启动ntpd服务

sudo systemctl start ntpd

(5)设置ntpd服务开机启动

sudo systemctl enable ntpd
  1. 其他机器配置(必须root用户)

(1)在其他机器配置10分钟与时间服务器同步一次

sudo crontab -e

编写定时任务如下:

*/10 * * * * /usr/sbin/ntpdate hadoop101

(2)修改任意机器时间

sudo date -s "2017-9-11 11:11:11"

(3)十分钟后查看机器是否与时间服务器同步

date

5 hadoop相关端口

在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-27 11:55:47  更:2021-08-27 11:56:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 17:21:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码