hadoop总结

本文详细介绍了Hadoop的核心组件HDFS、YARN和MapReduce,以及Zookeeper、Flume和Hive在大数据处理中的作用。通过实际操作展示了Hadoop集群的搭建过程,包括配置文件、时间同步、免密登陆、防火墙设置等关键步骤。此外,还探讨了Hadoop在数据存储、计算和协调服务中的角色,并提到了Hadoop的扩展性和可靠性。文章还深入讨论了数据仓库和数据库的区别,以及数据分析的基本流程,强调了数据采集、预处理、入库、分析和展现的重要性。
摘要由CSDN通过智能技术生成

hadoop总结

Hadoop第一天
1.Vmwarey有三种模式:桥接模式 ,nat模式,host-only模式 一般情况下 用nat
2./etc是配置文件的目录/var是储存各种变化的文件。
3.修改主机名:vi/etc/sysconfig/network 修改原 hostname 为 newname
4.修改ip:/etc/sysconfig/network-scripts/ifcfg-eth0,修改之后
service network restart
reboot
5.ssh (secure shell的缩写) 是一种网络安全协议,通过使用ssh,可以对传输过程的数据进行加密,可以有效的防止在远程管理的过程中信息的泄露。
6.用户名密码验证流程:1.客户端向服务端发送一个ssh请求2.服务端就收到请求之后发送公钥给客户端3.客户端在输入密码的时候通过公钥加密 回传给服务端4.服务端通过私钥解密验证用户名密码是否正确 验证成功正常登录,验证失败再次验证。
7.默认情况下,CentOS 系统会自带安装 OpenSSH 服务。 (openssh 提供了 scp:远程拷贝 slogin:远程登录 sftp:安全文件传输)

8.Service iptables stop:关闭防火墙(临时关闭,重启开机还需要再次关闭)
Service iptables start:开启防火墙
Service iptables restart:重启
chkconfig iptables off 永久关闭防火墙

设置三台机器同一个时间:date -s “2018-7-23 9:26:23”

免密登陆
ssh-keygen(生成密钥) 四次回车
Ssh-copy-id 机器名/ip地址(发送公钥到其他机器) 【将公钥写入到知道机器上的文件里去了】

8.域名映射:vi /etc/hosts(修改host的文件)
Ip 主机名
Ip 主机名()
Ip 主机名(位置顺序是不能变的)
Window下要需要配置 c/windows/system32/dirvers/etc/hosts
9.linux 和windows 操作系统之间的传输 sftp 和lrzsz 用lrzsz
先安装:yum -y install lrzsz 即可 rz上传 sz 下载
10.分发文件
Scp -r install.log root@node-01:/root/aaa (在第一台机器上的文件编辑过程中,copy 到其他机器上对应的文件)
分发多个文件
Scp -r 发送文件1 空格 发送文件2 root@node-01:/root/aaa
11.用户权限:
chmod u+rwx (给用户添加权限)
Chmod u-x (删除用户权限)
一次性控制
Chmod 777 文件
12.ps -ef | grep sshd 查找指定 ssh 服务进程
13.find . -name “*.log” -ls 在当前目录查找以.log 结尾的文件,并显示

14.Mkdir -p /root/demo/demo2 创建多级目录

vi hello1.sh
ll
chmod +x /hello1.sh
ll
chmod +x ./hello1.sh
./hello1.sh
vi hello1.sh
./hello1.sh
Set

例子:
#!/bin/bash
echo “第一个参数为: 1 " ; e c h o " 参 数 个 数 为 : 1"; echo "参数个数为: 1";echo"#”;
echo “传递的参数作为一个字符串显示:$*”;

测试: ./test.sh 1 2 3

运算:脚本 expr 是一款表达式计算工具,使用它能完成表达式的求值操作
val=expr 2 + 2
echo $val

(())和【】 也可以运算
脚本:count=1
((count++))
echo c o u n t a = count a= counta=((1+2))
a=$[1+2]
echo $a

set 命令查看当前环境变量

Hadoop第二天
Zookeeper 是一个分布式协调服务的开源框架。
ZooKeeper 本质上是一个分布式的小文件存储系统。

Zookeeper的特性:

1.全局数据一致性:集群的每个服务器都保存一份相同的副本。
2.可靠性:如果消息被一台服务器接收,那么消息将被所有的服务器接收。
3.顺序型:包括全局有序和偏序俩种;
4.数据更新的原子性:一次数据更新,要么成功(半数以上节点成功),要么失败。
5.实时性:zookeeper 可以保证客户端在一个时间间隔内获得服务器的更新信息,或者服务器的失效信息。

Zookeeper 的集群角色
1.Leader:对于 create,setData,delete 等有写操作的请求,则需要统一转发给
leader 处理.(写操作,保证事务的顺序性)
2.Follower:处理非事务的请求(读操作),转发请求给leader;参与集群leader的选举机制。
3.Observer:不会参与任何形式的投票,只提供非事务的请求。对于事物请求也转发给 leader。

Zookeeper 集群搭建:

zookeeper集群的搭建

  • 配置文件

  • myid

操作记录

  # 清理掉以往安装记录 在每台机器上都需要执行
  rm -rf /export/servers/zk349/ && rm -rf /export/data/zk/ && rm -rf /export/logs/zk
  # 在node01上解压zookeeper
  tar -zxvf zookeeper-3.4.9.tar.gz -C /export/servers/
  # 对安装目录进行修改
  cd /export/servers/
  mv zookeeper-3.4.9/ zk
  # 修改配置文件
  cd /export/servers/zk/conf
  mv zoo_sample.cfg  zoo.cfg
  cat zoo.cfg  |grep -v "#"
  # 得到以下结果
  ---
  tickTime=2000
  initLimit=10
  syncLimit=5
  dataDir=/export/data/zk


 logDataDir=/export/logs/zk
  clientPort=2181
  ---
  # 新增服务器节点信息,参见完整配置文件。
  ---
  server.1=node01:2888:3888
  server.2=node02:2888:3888
  server.3=node03:2888:3888
  ---
  # 分发到其他机器上
  scp -r /export/servers/zk/ node02:/export/servers/
  scp -r /export/servers/zk/ node03:/export/servers/
  
  # 在每台机器上创建一个myid文件,并写入编号
  # node01 上执行
  mkdir -p /export/data/zk
  touch /export/data/zk/myid
  echo "1" > /export/data/zk/myid
  
  # node02上执行
  mkdir -p /export/data/zk
  touch /export/data/zk/myid
  echo "2" > /export/data/zk/myid
  
  # node03上执行
  mkdir -p /export/data/zk
  touch /export/data/zk/myid
  echo "3" > /export/data/zk/myid
  
  # 启动服务,在每台机器上都执行一遍
  cd /export/servers/zk/bin/
  ./zkServer.sh start
  # 启动完之后确定状态
  ./zkServer.sh status

完整配置文件

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/export/data/zk
logDataDir=/export/logs/zk

clientPort=2181

server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888

注意事项

前提:首先 安装jdk which java

  • node01 这是本机的域名,需要大家修改下。
  • vi编辑器,需要先输入i,然后粘贴内容
  • 每台机器上都需要启动

Zookeeper节点 分为顺序节点/临时节点和持久节点。
若不写-s/-e 默认是持久节点(手动删除才会删除)

创建a节点: create -s /test a (顺序节点)
Create -e /test a (临时节点)(会话结束,临时
节点将被自动删除)

Zookeeper 的数据结构:
每一个节点被称为Znode. znode由三部分组成。
1.start:此为状态信息,描述该znode的版本,权限等信息。
2.Data:是与该节点关联的数据。
3.children :该znode的子节点。

Znode 有一个序列化特性。

第三天 数据分析

大数据时代的来临:
公开数据显示,互联网搜索巨头百度 2013 年拥有数据量接近 EB 级别。阿
里、腾讯都声明自己存储的数据总量都达到了百 PB 以上。此外,电信、医疗、
金融、公共安全、交通、气象等各个方面保存的数据量也都达到数十或者上百 PB
级别。全球数据量以每两年翻倍的速度增长,在 2010 年已经正式进入 ZB 时代,
到 2020 年全球数据总量将达到 44ZB。
Kb mb gb tb pb eb zb yb bb

大数据:指的是针对海量数据处理。
云计算:指的是硬件资源虚拟化,为数据运行提供环境。

企业在运行大数据选择:
-用实体的服务器
-用云服务器
-共有云
-私有云
–混合云

数据分析 :按照数据分析的时效性,我们将数据分析分为 离线分析和实时分析俩种。
数据分析:是通过传统的统计方法对收集来的数据 进行数据分析。他能够帮助企业进行判断和决策,以便企业做出相应的决策和行动。数据分析分为:描述性数据分析、探索性数据分析、验证性数据分析。同时数据分析可以分析过去的数据 也就是离线数据分析、分析当下的数据也就是实时的数据 叫做实时分析、还可以对未来的数据进行分析 也就是我们说的机械学习,机械学习呢 主要是分类和聚类 然后预测数据。

数据分析目的是什么呢:是将隐藏在数据背后的信息集中的提炼出来 总结出所研究对象的内在规律帮助管理者进行有效的判断和决策。

数据分析在企业的日常经营分析中主要有三大作用:现状分析(告诉我们当前的状况)、原因分析(某一现状为什么发生)、预测分析(告诉我们将来会发生什么)

数据分析的步骤:明确分析的目的和思路------>数据收集—>数据处理—>数据分析—>数据展现---->撰写报告

怎样理解传统数据分析和和当下的大数据分析?
共同点:都是挖掘数据中的规律和价值
不同点:数据量变大以后,不管是分析的技术 还是分析的方式 传统分析的方式已经接应不暇 需要采用大数据技术
企业中:数据分析最终就是为了赚钱。

离线分析(处理)针对已有的历史数据 开展分析处理,批处理。
实时分析(处理)针对当下的数据实时分析。流(Stream)处理
Apache kafka

1.明确分析的目的和思路 (分析体系框架)

在这里插入图片描述

2.数据收集 :按照确定的数据分析框架,收集相关的数据的过程,他为数据分析提供了素材和依据。
一般数据主要来源有一下 几种:
数据库:每个公司都有自己的业务数据库
公开的出版物:
互联网:
市场调查:
3.数据处理:对收集来的数据进行加工和处理。数据处理主要包括:数据清洗、数据转化、数据提取、数据计算等处理方法。
4.数据分析:用适当的分析方法及工具,对处理过的数据进行分析,,提取有价值的信息
其中数据挖掘是一种高级的数据分析方法。
5.数据展现:数据是通过表格和图形的方式展现出来。也就是我们说的图表说话。
6.撰写报告:就是对整个分析过程的总结和呈现。

一、网站流量日志数据分析系统。
网站的访问者-----------网站服务器(log.文件)—工具提供商(数据处理服务器和分析报表服务器)-----------------------网站分析报表。
此系统存在的意义:帮助提高网站的流量,提升用户的体验,让客户更多的沉淀下来变成会员或者客户,通过更少的投入获得最大化收入。

改善网站的运营,获得更高的投资回报率(ROI).也就是赚更多的钱。

Windows中装载 就相当于将一个包解压 里面全是相关的rpm包。类似于一个中央仓库。
Linux 中 相当于 mount命令 mount -o loop /dev/cdrdom1 /root/itcast 【这里只是举一个例子 本地驱动

+cdrom】【在做本地yum源时 你需要将相关的镜像iso 上传到linux中,然后mount -o loop /路径.iso镜像 /目标目录。】 将cdrdom1装在到itcast 目录下 里面有package 目录 里面全是包

卸载:umount /root/itcast
比如:txt文件 用文本编辑器打开 doc用word打开 视频文件用播放器打开 而linux中的驱动 用mount 打开。
装载之后,itcast 文件中有俩个重要目录 package 和repodata package包 repodata: 包之间的依赖。

Yum源 有俩个配置 一是直接配置在/etc/yum.conf 中,其中包含一些
主要的配置信息。另外就是/etc/yum.repos.d/下的 xx.repo 后缀文件, 默认都
会被加载进来。

Rename .rep .repo.bat ./*.repo 将所有的repo文件改名 让其网络yum源失效

cp CentOS-Media.repo.bak CentOS-local.repo 开始配置本地yum源

将文件中的name 改为 this is my local yum source 0改为1

当本地已经安装了httpd
错误将卸载:yum
Rpm -qa yum 查看
Rpm -qa |grep yum |xargs rpm -e --nodeps 卸载和yum有关的所有组件
Rmp -qa yum 再次查看 没有了

在这里插入图片描述
Yum clear all :清理yum源让刚才修改生效。

本地yum源可以解决网络不好的情况下,yum时间过长的问题,但是本地yum源也有其明显的弊端,就是yum源的版本过旧不能随时更新。如果你想换回以前的yum源,将之前备份的repo文件恢复过来,再执行yum clean all和yum repolist all查看一下是否改变

Service httpd status
Service httpd start
Service httpd stop
Httpd -v 查看httpd版本
httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。

A类网络的IP地址范围为1.0.0.1-127.255.255.254;第一个八位 是网络地址 后三个八位是主机地址。
B类网络的IP地址范围为:128.1.0.1-191.255.255.254;第二个八位是网络地址,剩下的三个是主机地址。
C类网络的IP地址范围为:192.0.1.1-223.255.255.254;第三个八位是网络地址,剩下的三个是

Node 1 上 装httpd 相当于tomcat (apche) index.html 在此机器上 【cd /var/www/html】
查看 httpd 开启状态: service httpd status

启动 httpd :service httpd start

Node3 部署上nginx 【cd /usr/local/nginx/html】
查看nginx 状态:ps -ef|grep nginx
启动nginx cd/usr/local/nginx sbin/nginx -c conf/nginx.conf
停止nginx: sbin/nginx –s stop

tail -f logs/access.log

Linux 系统下 nginx 不支持 中文,会将中文转为16进制
网站浏览日志:埋点 (分为俩种 一是· 可视化埋点 二是代码埋点)

第四天:Hadoop
Hadoop 是apache旗下的一个用Java语言实现的开源的软件框架。
允许在简单的编程模型在大量的计算机集群上对大型数据集进行分布式处理。
Hadoop 的几个核心组件:
Hdfs : (分布式文件系统) 结局海量数据的存储。
Yarn:(作业调度和集群资源管理的框架): 解决资源任务调度。
Mapreduce ( 分布式运算编程框架) :解决海量数据的计算。

Hadoop 生态圈:
Hdfs : (分布式文件系统) 结局海量数据的存储。

Mapreduce ( 分布式运算编程框架) :解决海量数据的计算
Hive:基于Hadoop的分布式数据仓库,提供基于sql的查询数据操作。
Hbase:基于Hadoop的分布式海量数据库。
Zookeep:分布式协调服务基础组件。
Mahout:基于mapreduce/spark/flink等分布式运算框架的机械学习算法库。
Flume:日志数据采集框架。
Impala:基于Hadoop的实时分析。
Hadoop的特点:
扩容能力: Hadoop是在可用计算机集群中分配数据并完成计算任务的,可以扩展到数以千计的节点中。
成本低:Hadoop 只需要通过普通的机器组成服务器集群来分发以及处理数据即可。
高效率:通过并发数据,Hadoop可以在节点之间动态并行的移动数据,使得速度非常快。
可靠性:能自动维护数据的多分复制,并且在任务失败后能自动的重新部署计算任务。所以Hadoop按位存储和处理数据的能力值得人信赖。

Apache Hadoop 2.7.4
Hadoop集群一般来讲包含俩个集群:hdfs 集群和yarn集群,俩个逻辑上分离,但物理上常在一起。
Hdfs集群:负责海量数据的存储,主要角色有:

namenode ,datanode,secondaryNameNode.
yarn集群:负责海量数据运算是的资源的调度, 主要角色有:
ResourceManager 、NodeManager
而mapreduce 主要是一个分布式运算框架,主要是打包后运行在hdfs集群上,并且受到yarn集群的资源管理调度。
Hadoop部署有三种方式:独立模式、伪分布式模式、集群模式。我们主要学的是集群模式。

Hadoop 开始安装:
前提步骤:
1.同步多台服务器时间。
date -s “2017-03-03 03:03:03”
或则同步网络时间: yum install ntpdate 然后 ntpdate cn.pool.ntp.org
2.设置主机名:
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=node-1
3.配置 IP 、主机名 映射
vi /etc/hosts
192.168.33.101 node-1
192.168.33.102 node-2
192.168.33.103 node-3

4.配置 h ssh 免密登陆
#生成 ssh 免登陆密钥
ssh-keygen -t rsa (四个回车)
执行完这个命令后,会生成 id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免密登陆的目标机器上
ssh-copy-id node-02
5.查看防火墙状态
Service iptables status
关闭防火墙:chkconfig iptables off(永久,开机关闭)或则 service iptables stop
7.jdk环境安装

安装hadoop 开始:
上传 Hadoop 解压
bin:Hadoop 最基本的管理脚本和使用脚本的目录
etc:Hadoop 配置文件所在的目录,包括 core-site,xml、hdfs-site.xml、
mapred-site.xml 等从 Hadoop1.0 继承而来的配置文件和 yarn-site.xml 等
Hadoop2.0 新增的配置文件。
include:对外提供的编程库头文件(具体动态库和静态库在 lib 目录中),
这些头文件均是用 C++定义的,通常用于 C++程序访问 HDFS 或者编写 MapReduce

lib:该目录包含了 Hadoop 对外提供的编程动态库和静态库,与 include 目
录中的头文件结合使用。
libexec:各个服务对用的 shell 配置文件所在的目录,可用于配置日志输
出、启动参数(比如 JVM 参数)等基本信息。
sbin:Hadoop 管理脚本所在的目录,主要包含 HDFS 和 YARN 中各类服务的
启动/关闭脚本。
share:Hadoop 各个模块编译后的 jar 包所在的目录。

要修改的配置文件
1.Hadoop-env.sh :配置java_home
vi hadoop-env.sh
export JAVA_HOME=/root/apps/jdk1.8.0_65

  1. core-site.xml :用来设置Hadoop的文件系统,由uri指定 以及配置Hadoop的临时目录。
  2. hdfs-site.xml :指定hdfs的副本数量,以及secondary namenode 所在主机的ip和端口
  3. mapred-site.xml :指定mr运行时框架,在yarn上。默认是local
  4. Yarn-site.xml :配置resourcemanager 和nodemanager
  5. Slaves :note1 note2 note3
    7.Vi /etc/profile

export JAVA_HOME= /root/apps/jdk1.8.0_65
export HADOOP_HOME= /root/apps/hadoop-2.7.4
export PATH= P A T H : PATH: PATH:JAVA_HOME/bin: H A D O O P H O M E / b i n : HADOOP_HOME/bin: HADOOPHOME/bin:HADOOP_HOME/sbin
保存配置文件,刷新配置文件:
source /etc/profile

Hadoop 环境首次搭建完成之后 ,hdfs需要格式化(可以理解为初始化)
在主机上 执行:hdfs namenode - format (切记:此操作只能在hadoop环境刚搭建完成后 执行,不然要跑路了,其主要目的就是初始化时建一些自己的文件目录)
结果会有这个地址:/export/data/hddata/dfs/name/current

在这里插入图片描述

???万一执行了多次 format 怎么办
到core-site.xml 中,将hadoop.tmp.dir指定的目录全部删除,在重新执行一下format

单节点一一启动:【一键启动只需要在那台主机上操作即可但单节点启动 则datanode 和se… 都需要在各自的机器上启动】
启动hdfs namenode :hadoop-daemon.sh start namenode
启动hdfs datanode :hadoop-daemon.sh start datanode

启动 yarn resourcemanager :yarn-daemon.sh start resourcemanager
启动 yarn nodemanager :yarn-daemon.sh start nodemanager
停止 将start 改为stop即可。

脚本一键启动: hdst 一键启动 :start-dfs.sh
Yarn 一键启动 :start-yarn.sh
整体hdsf和yarn 一键启动 :start-all.sh
停止的话:都是将 start 改为 stop 即可。

Hadoop 页面初级体验 通过webui 既浏览器
查看:nn(namenode所在机器ip+ 端口:50070)【相当于 hdfs文件存储系统查看】
查看:resourcemanager 所在机器ip+端口:8088 【相当于 yarn 资源调度系统查看】

在主机上:创建input目录命令:hadoop fs -mkdir -p /wordcount/input【此时hdfs文件系统 utilities 中可以看到创建的目录 note1:50070】
主机上也可以查看:hadoop fs -ls / 【/查看根目录下目录】

如何将linux系统中本地文件 上传到 hdfs文件系统中?
Hadoop fs -put /root/a.txt /wordcount/input 【/root/a.txt :Linux本地位置文件,/wordcount/input hdfs系统文件目录】

Hdfs前言:
Hdfs最核心的就是 namenode和 datanode 以及 SecondaryNameNode
Namenode : namenode是hdfs的核心,也叫master 。其仅存储元数据,不存储实际的数据,实际的数据存储在datanode中,namenode知道hdfs中任何给定文件块列表及其位置信息。
Namenode 对hdfs至关重要,当namenode关闭时,hdfs/hadoop 集群无法访问。

Datanode :datanode 负责将实际的数据存储在hdfs中,datanode 也叫slave. namenode和datanode 保持不断通信。Datanode启动时会将自己发不到namenode并汇报自己负责持有的块列表。当某个datanode关闭时不会影响数据或则集群的可用性。因为namenode将会安排其他的datanode 来负责管理当前关闭的datanode的块进行副本复制。Datanode所在机器需要配置大量的硬盘空间,因为实际数据存储在datanode中。

同时datanode会定期向namenode(dfs.heartbeat.interval 配置项配置,默认是 3 秒) 发送心跳,如果namenode长时间没有接收到datanode发送的心跳,namenode就是认为datanode失效。
Block汇报的时间间隔取决于参数dfs.blockreport.intervalMSec,参数如果未配置的话,默认时间的6小时。

Hdfs 初级体验

Namenode :任何访问操作都是通过namenode 发起的(namenode 保存了文件系统的元数据)
元数据:文件目录结构、文件跟block(分“块”存储)之间的对应信息可以理解为位置信息、跟datanode状态相关的信息(磁盘使用率和datanode生死)。

1.Hdfs 文件系统唯一访问路径: hadoop fs -ls hdfs://namenode:port/ (例如ÿ

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值