传统处理方式无法解决的大而且复杂的数据集(存储和计算)
大数据存储和计算的一整套解决方案,软件平台。
重点组件:
HDFS: Hadoop 的分布式文件存储系统MapReduce: Hadoop 的分布式程序运算框架,也可以叫做一种编程模型Hive: 基于 Hadoop 的类 SQL 数据仓库工具HBase: 基于 Hadoop 的列式分布式 NoSQL 数据库ZooKeeper: 分布式协调服务组件Mahout: 基于 MapReduce/Flink/Spark 等分布式运算框架的机器学习算法库Oozie/Azkaban: 工作流调度引擎Sqoop: 数据迁入迁出工具Flume: 日志采集工具负载均衡集群
分布式
利用多个节点共同协作完成一项或多项具体业务功能的系统就是分布式系统。
修改ip地址,静态ip地址
修改主机名称和主机映射
修改系统启动级别
vim /etc/inittab 将 id:5:initdefault: 修改成 id:3:initdefault: 防火墙和selinux service iptables stop chkconfig iptables off selinux:linux的安全管理策略 vim /etc/selinux/config SELINUX=disabled 同步时间 date -s "" ntpdate ntp1.aliyun.com jdk安装 保证同名的普通用户并且配置ssh免密登录单节点
伪分布式集群
完全分布式
1.下载hadoop软件包
http://hadoop.apache.org/ http://archive.apache.org/dist/2.上传到服务器
put -r hadoop.tar.gz3.解压操作
1./opt/moudle/.... 权限(用户名组修改为hadoop) sudo(sudoers权限配置) 2./home/hadoop/ tar -zxvf hadoop-2.7.7-centos-6.7.tar.gz4.目录结构
bin: 可执行文件(操作命令 hdfs...) sbin: 可执行文件(集群启动关闭,负载均衡...) etc: 配置文件 share: 共享文件(common/hdfs/mapreduce等jar)5.进程规划
hdp01hdp02hdp03namenodedatanodedatanodedatanodeResourceManagersecondarynamenodeNodeManagerNodeManagerNodemanager6.配置
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 core-site.xml 默认的文件系统,默认值(file:///本地文件系统) hdfs://ip:port hdfs集群的入口地址(namenode:客户端的请求和响应) 1.使用分布式的文件系统 2.namenode所在的节点为hdp01 3.hdfs集群的访问路径: hdfs://hdp01:9000 <property> <name>fs.defaultFS</name> <value>hdfs://hdp01:9000</value> </property> 临时文件的存储目录: <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/hadoopdata</value> </property> hdfs-site.xml dfs.replication: 副本数(默认3个副本) dfs.blocksize:每个块的大小(1.x:64m, 2.x:128m) namenode的元数据存储的目录: <property> <name>dfs.namenode.name.dir</name> <value>/home/hadoop/hadoopdata/name</value> </property> datanode的block信息存储的目录: <property> <name>dfs.datanode.data.dir</name> <value>/home/hadoop/hadoopdata/data</value> </property> secondarynamenode的节点配置: <property> <name>dfs.secondary.http.address</name> <value>hdp03:50090</value> </property> mapred-site.xml cp mapred-site.xml.template mapred-site.xml mapreduce作业运行的平台: <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> yarn-site.xml <property> <name>yarn.resourcemanager.hostname</name> <value>hdp02</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> slaves(dn和nm) namenode/ResourceManager --> master datanode/NodeMnager --> slave hdp01 hdp02 hdp03 7.环境变量 /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 8.发送到其他节点 scp -r hadoop-2.7.7 hadoop@hdp02:~/ scp -r .bash_profile hadoop@hdp03:~/ 9.hdfs集群(namenode)格式化 hdfs namenode -format (只能格式化一次) 10.启动集群 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 11.成功检测 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 /outputOK了,集群已经搭建成功!
hadoop高可用原理:将元数据存储在第三方文件系统平台(类似于zookeeper) high availability using the Quorum Journal Manager(QJM)
将元数据信息存储在QJM这个平台,采用 文件系统+监听机制: active 将元数据信息存储在QJM这个平台,standby 会时刻监听 QJM 平台 edits 文件的更新,一旦有更新,standby 会立即将更新的 edits 文件拉取到自己的节点。
高可用集群 详见 hadoop HA (高可用 high available)的搭建