传统处理方式无法解决的大而且复杂的数据集(存储和计算)
在总数据量相同的情况下,与个别分析独立的小型数据集(Data set)相比,将各个小型数
据集合并后进行分析可得出许多额外的信息和数据关系性,可用来政治经济国庆调控、 察觉
商业趋势、 判定研究质量、 避免疾病扩散、 打击犯罪或测定即时交通路况等, 这样的用途
正是大型数据集盛行的原因。
大数据存储和计算的一整套解决方案,软件平台。
* Common(基础设施)
* HDFS: 分布式的文件系统(海量数据的存储)
* MapReduce: 分布式的计算框架(海量数据离线运算)
* Yarn: 分布式资源调度系统(2.x)
* apache hadoop: 2008年,初学者入门,简单易入手
* cloudera hadoop: 2009年,企业中使用 CDH,性能强
* hortonworks hadoop: 2011年,文档全面
负载均衡集群
分布式
利用多个节点共同协作完成一项或多项具体业务功能的系统就是分布式系统。
* namenode(nn): 存放元数据信息,存储文件名称,文件属性,文件的块列表,所在的dn的节点列表
* datanode(dn): 存放具体的block的,校验文件。
* secondarynamenode(2nn): 降低namenode压力,辅助作用。
修改ip地址,静态ip地址
修改主机名称和主机映射
修改系统启动级别
vim /etc/inittab
将 id:5:initdefault:
修改成
id:3:initdefault:
service iptables stop
chkconfig iptables off
selinux:linux的安全管理策略
vim /etc/selinux/config
SELINUX=disabled
date -s ""
ntpdate ntp1.aliyun.com
单节点
伪分布式集群
完全分布式
1.下载hadoop软件包
http://hadoop.apache.org/
http://archive.apache.org/dist/
2.上传到服务器
put -r hadoop.tar.gz
3.解压操作
1./opt/moudle/.... 权限(用户名组修改为hadoop)
sudo(sudoers权限配置)
2./home/hadoop/
tar -zxvf hadoop-2.7.7-centos-6.7.tar.gz
4.目录结构
bin: 可执行文件(操作命令 hdfs...)
sbin: 可执行文件(集群启动关闭,负载均衡...)
etc: 配置文件
share: 共享文件(common/hdfs/mapreduce等jar)
5.进程规划
hdp01 | hdp02 | hdp03 |
---|---|---|
namenode | datanode | datanode |
datanode | ResourceManager | secondarynamenode |
NodeManager | NodeManager | Nodemanager |
6.配置
hadoop-env.sh
整个hadoop的环境,hadoop进程是jvm进程,配置jdk的环境变量
export JAVA_HOME=/opt/jdk1.8.0_73
运行一个mr示例:
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount input/ output
默认的文件系统,默认值(file:///本地文件系统)
hdfs://ip:port hdfs集群的入口地址(namenode:客户端的请求和响应)
1.使用分布式的文件系统
2.namenode所在的节点为hdp01
3.hdfs集群的访问路径: hdfs://hdp01:9000
<property>
<name>fs.defaultFSname>
<value>hdfs://hdp01:9000value>
property>
临时文件的存储目录:
<property>
<name>hadoop.tmp.dirname>
<value>/home/hadoop/hadoopdatavalue>
property>
dfs.replication: 副本数(默认3个副本)
dfs.blocksize:每个块的大小(1.x:64m, 2.x:128m)
namenode的元数据存储的目录:
<property>
<name>dfs.namenode.name.dirname>
<value>/home/hadoop/hadoopdata/namevalue>
property>
datanode的block信息存储的目录:
<property>
<name>dfs.datanode.data.dirname>
<value>/home/hadoop/hadoopdata/datavalue>
property>
secondarynamenode的节点配置:
<property>
<name>dfs.secondary.http.addressname>
<value>hdp03:50090value>
property>
cp mapred-site.xml.template mapred-site.xml
mapreduce作业运行的平台:
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
<property>
<name>yarn.resourcemanager.hostnamename>
<value>hdp02value>
property>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
namenode/ResourceManager --> master
datanode/NodeMnager --> slave
hdp01
hdp02
hdp03
/etc/profile
当前用户,配置如下两个文件即可(任意一个都可)
~/.bashrc
~/.bash_profile
配置如下信息:
export HADOOP_HOME=/home/hadoop/hadoop-2.7.7
export PATH=$PATH:$HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
最后source一下,更新配置文件。
source .bash_profile
scp -r hadoop-2.7.7 hadoop@hdp02:~/
scp -r .bash_profile hadoop@hdp03:~/
hdfs namenode -format (只能格式化一次)
1.逐个进程启动
hadoop-daemon.sh start/stop namenode/datanode/secondarynamenode
yarn-daemon.sh start/stop ResourceManager/NodeManager
2.整个集群启动(涉及到通信,ssh免密登录)
start-dfs.sh/stop-dfs.sh
start-yarn.sh(必须在rm节点启动)/stop-yarn.sh
3.全部启动
start-all.sh/stop-all.sh
1.jps
2.利用图形界面
hdfs: http://hdp01:50070
yarn: http://hdp03:8088
3.运行任务
hdfs: hdfs dfs -copyFromLocal input/ /
yarn: hadoop jar hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /input /output
OK了,集群已经搭建成功!
hadoop高可用原理:将元数据存储在第三方文件系统平台(类似于zookeeper)
high availability using the Quorum Journal Manager(QJM)
将元数据信息存储在QJM这个平台,采用 文件系统+监听机制:
active 将元数据信息存储在QJM这个平台,standby 会时刻监听 QJM 平台 edits 文件的更新,一旦有更新,standby 会立即将更新的 edits 文件拉取到自己的节点。
高可用集群 详见 hadoop HA (高可用 high available)的搭建