二:大数据简介 数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的的原始素材。
数据可以是连续的值,比如声音、图像,称为模拟数据。也可以是离散的,如符号、文字,称为数字数据。 数据的分类从结构上可以分为
- 结构化数据:如:二维表
- 半结构化数据:如:xml、html、css
- 非结构数据:如:图片、音频、视频等 数据的来源- 企业自己的业务数据
- 网上爬虫爬来的数据
- 从第三方处买数据
数据的处理(1)字段缺失处理(2)敏感数据脱敏大数据的特点数据量大种类多速度快价值高价值密度低,但是整体价值高 大数据的几个概念集群很多机器共同完成一个任务,我们将这多台机器叫做集群。每一个机器叫做节点。 分布式一个任务被分成多个小人物。每个机器只负责一个小任务,这个任务的执行就是分布式执行的。 分布式数据库:一个数据库被分成多个部分分别存储在多个机器上分布式文件系统:一个文件被划分为多个文件,分布式存储在不同的节点上分布式计算系统:一计算任务被分成多个小任务,在多台机器上执行。每台机器只负责一部分的执行负载均衡同一个集群中的每个节点分担的任务相当,这与机器的硬件配置有关,无法做到绝对的负载均衡。 三:Hadoop背景来源谷歌公司为自己的搜索引擎实现了海量数据存储和计算,但是并没有开源。2003年以GFS(海量数据的计算问题)-MAPREDUCE(海量数据的计算问题)-BIGTABLE(快速查询的问题)三篇论文的形式发表。doug cutting发现google的三篇论文,将这三篇论文用java实现了一遍。分别用HDFS ,MAPREDUCE,hbase来海量解决存储、计算、查询问题。之后他贡献给apache基金会,doug cutting本人也被挖到yahoo,并为他组织团队团队专注于hadoop的开发。谁也不曾想到,当年他以小孩的大象玩偶来命名的Hadoop,不仅开启了大数据时代,更成为孕育大数据技术的摇篮。 Hadoop是什么提供了高可靠(可以不间断地对外提供服务),高扩展性(横向扩展能力好)的分布式计算的开源软件。 hadoop中将硬件错误看成一种常态。硬件故障是一个常有的问题。 hadoop的模块hadoop 1.0 :hdfs+mapreduce hadoop2.0:
软件层面上:
- common:工具类模块,为以下再三模块提供公共工具,封装了rpc通信模块
- hdfs:hadoop的分布式数据存储模块。多台机器共同存储。主从架构存储:
- 主:namenode,是存储架构的主节点。主要用于存储元数据(记录数据的数据)的信息。
- 从:datanode,真实存储数据的节点。
- secondarynamenode:namenode的冷备份(复制)节点,但是替代不了namenode。存储一份元数据信息,帮助namenode的恢复
- mapreduce:分布式数据计算
- map:分
- reduce:合
- 学习编程,流程
- yarn:分布式资源调度框架,负责为每一个计算任务分配资源
- 主从架构:
- 主:resourcemanager,负责整个集群的资源调度,不负责执行
- nodemanager,负责真正的程序执行 - 正常的集群启动:
- namenode
- datanode
- secondarynamenode
- resourcemanager
- nodemanager
- hadoop
hadoop的安装单机模型伪分布式搭建—-准备工作1)修改ipvi /etc/sysconfig/network-scripts/ifcfg-eth0 2)主机名vi /etc/sysconfig/network 3)映射vi /etc/hosts 4)关闭防防火墙和selinuxservice iptables stop vi /etc/selinux/config
SELINUX=disable 5)配置普通用户 赋予sudolers权限 root权限:vi /etc/sudoershadoop ALL=(ALL) ALL 6)免密登录:这里使用普通用户- ssh-keygen
- ssh-copy-id 目标机器ip
- 验证:ssh 目标机器ip
当前用户的秘钥存放地:/home/hadoop/.ssh 7)将系统启动级别改为3 # Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this) 关机 init 0
# 1 - Single user mode 单用户
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking) 多用户 没有网络
# 3 - Full multiuser mode 完全多用户
# 4 - unused 弃用
# 5 - X11 图形化
# 6 - reboot (Do NOT set initdefault to this) 重启 init 6
id:3:default
8)安装jdk
配置环境变量:
export JAVA_HOME=/home/hadoop/apps/jdk1.8.0_73
export PATH=$PATH:$JAVA_HOME/bin
使配置文件生效:
source /etc/profile
验证jdk安装成功:
java -version
javac
卸载自带的jdk:
rpm -qa | grep jdk
sudo rpm -e java-1.7.0-openjdk-1.7.0.99-2.6.5.1.el6.x86_64 --nodeps
sudo rpm -e java-1.6.0-openjdk-1.6.0.38-1.13.10.4.el6.x86_64 --nodeps
9)时间同步
搭建伪分布集群时不需要,完全分布式需要
伪分布式搭建—-开始安装
1)上传安装包
2)解压并且放到创建的文件夹apps/下
tar -xvzf hadoop-2.7.6.tar.gz -C apps/
3)修改配置文件
注意是hadoop2.7.6/etc下的配置文件,我的完整目录在:/home/hadoop/apps/hadoop-2.7.6/etc/hadoop
一共需要修改6个配置文件:
1)vi hadoop-env.sh
export JAVA_HOME=/home/hadoop/apps/jdk1.8.0_73
2)core-site.xml
这个是核心文件配置文件。主要负责三个模块的公共的配置
<property>
<name>fs.defaultFS</name> 配置项的名字 不可以改的 文件系统的默认访问路径
<value>hdfs://hadoop02(主机名):9000(端口号)</value> 配置项的值
</property>
3)hdfs-site.xml
这个文件是hdfs的相关配置
<property>
<name>dfs.replication</name> 文件存储的份数
<value>2</value>
默认是3,我改成了2
</property>
4)mapred-site.xml
这里去操作的时候只有mapred-site.xml.template,所以我们先用命令复制一份再去编辑:
- cp mapred-site.xml.template mapred-site.xml
- vim mapred-site.xml
<property> <name>mapreduce.framework.name</name> mapreduce程序的资源调度框架
<value>yarn</value>
</property>
1
2
3
5)yarn-site.xml
yarn配置文件
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
6)slaves
配置从节点的信息,把从节点主机名字写上。注意:一行一个主机名, 主机名输完之后不要加空格、回车。
4)配置hadoop的环境变量
vi /etc/profile
export JAVA_HOME=/home/hadoop/apps/jdk1.8.0_73
export HADOOP_HOME=/home/hadoop/apps/hadoop-2.7.6
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
hadoop version 检验
5)进行格式化执,这一步非常重要
hadoop namenode -format
如果成功:
18/07/12 16:31:08 INFO common.Storage: Storage directory /tmp/hadoop-hadoop/dfs/name has been successfully formatted.
如果格式化不成功,修改错误的地方 重新格式化,格式化成功,只需要一次!!!成功之后不要进行第二次格式化!!!
6)启动
start-dfs.sh
启动hdfs:namenode、 datanode、secondarynamenode
jps:在客户端PS命令查看进程
27504 DataNode
27692 SecondaryNameNode
27804 Jps
27405 NameNode
start-yarn.sh 启动yarn
27504 DataNode
27953 NodeManager
27988 Jps
27851 ResourceManager
27692 SecondaryNameNode
27405 NameNode
7)验证:
http://192.168.40.161:50070 hdfs的web网页
http://192.168.40.161:8088 yarn的web网页
注:如果确定自己安装成功,但是打不开网页,可以再去看一下自己的防火墙关了没有
完全分布式安装
集群规划
集群规划:哪个节点上安装那个进程
我们需要:
hdfs:namenode(1个)、datanode(多:3个)、secondarynamenode(1个)、
yarn:resourcemanager(1个)、 nodemanager(3个)、
hadoop01 namenode datanode nodemanager
hadoop02 datanode secondarynamenode nodemanager
hadoop03 datanode resourcemanager nodemanager
准备工作
与伪分布式过程一样
开始安装
先在一台机器上安装,然后再远程发送给另外两台机器:
1)上传
2)解压
tar -xvzf hadoop-2.7.6.tar.gz
3)修改配置文件
在 /home/hadoop/apps/hadoop-2.7.6/etc/hadoop下:
1)hadoop-env.sh
export JAVA_HOME=/home/hadoop/apps/jdk1.8.0_73
2)core-site.xml
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/data/hadoopdata</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name> <value>hdfs://hadoop01:9000</value>
</property>
3)hdfs-site.xml
<property> <name>dfs.namenode.name.dir</name> <value>/home/hadoop/data/hadoopdata/name</value> <description>为了保证元数据的安全一般配置多个不同目录</description>
</property>
<property> <name>dfs.datanode.data.dir</name> <value>/home/hadoop/data/hadoopdata/data</value>
<description>datanode 的数据存储目录</description>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
<description>HDFS 的数据块的副本存储个数</description>
</property>
<property> <name>dfs.secondary.http.address</name> <value>hadoop02:50090</value> <description>secondarynamenode 运行节点的信息,和 namenode 不同节点</description>
</property>
4)mapred-site.xml
<property> <name>mapreduce.framework.name</name> <value>yarn</value>
</property>
5)yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop03</value>
</property>
<property>
name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>YARN 集群为 MapReduce 程序提供的 shuffle 服务</description>
</property>
6)slaves
hadoop02
hadoop03
hadoop04
4)配置hadoop的环境变量
export JAVA_HOME=/home/hadoop/apps/jdk1.8.0_73
export HADOOP_HOME=/home/hadoop/apps/hadoop-2.7.6
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
hadoop version
5)远程发送到其他两个节点
scp -r hadoop-2.7.6 hadoop02:$PWD
scp -r hadoop-2.7.6 hadoop03:$PWD
sudo scp /etc/profile hadoop03:/etc/
sudo scp /etc/profile hadoop04:/etc/
source /etc/profile
hadoop version
5)初始化
只需要在一台机器上执行,一定在namenode的节点上,hdfs的主节点上,我这里是hadoop02
- hadoop namenode -format
6)启动
启动hdfs start-dfs.sh 在任意一个节点上执行 执行一次
hadoop02:namenode datanode
hadoop03:datanode secondarynamenode
hadoop04:datanode
启动yarn: 最好在yarn的主节点 如果不在会造成resourcemanager启动失:start-yarn.sh
jps:在客户端PS命令查看进程
主节点(我的主节点也是一个从节点):
进程号 进程名
2930 NodeManager
3414 Jps
2637 DataNode
2526 NameNode
我的一个从节点:
3348 Jps
2427 SecondaryNameNode
2573 NodeManager
2366 DataNode
start-yarn.sh 启动yarn
2536 ResourceManager
2408 DataNode
3417 Jps
2843 NodeManager
验证:
hdfs:namenode:50070 hadoop01:50070
yarn:resourcemanager:8088 hadoop03:8088
|