目录:
3.3、安装hadoop----(解压,修改配置文件,分发到集群,初始化,启动)
3.4、修改配置文件(参考现成的配置文件xxx-site.xml)
3.7、从一个节点的“伪分布式”hadoop集群扩展为多节点分布式集群
1、大数据技术介绍
大数据技术生态体系:
-
Hadoop 元老级分布式海量数据存储、处理技术系统,擅长离线数据分析
-
Hbase 基于hadoop的分布式海量数据库,离线分析和在线业务通吃
-
Hive sql 基于hadoop的数据仓库工具,使用方便,功能丰富,使用方法类似SQL
-
Zookeeper 集群协调服务
-
Sqoop数据导入导出工具
-
Flume数据采集框架
-
Storm 实时流式计算框架,流式处理领域头牌框架
-
Spark 基于内存的分布式运算框架,一站式处理 all in one,新秀,发展势头迅猛
1. sparkCore
2. SparkSQL
3. SparkStreaming
- 机器学习:
1. Mahout 基于mapreduce的机器学习算法库
2. MLLIB 基于spark机器学习算法库
2、HADOOP简介
2.1、hadoop基本概念
(1)hadoop是用于处理(运算分析)海量数据的技术平台,且是采用分布式集群的方式;
(2)hadoop两个大的功能:
- 提供海量数据的存储服务;
- 提供分析海量数据的编程框架及运行平台;
(3)Hadoop有3大核心组件:
- HDFS---- hadoop分布式文件系统海量数据的存储(集群服务),
- MapReduce----分布式运算框架(编程框架)(导jar包写程序),海量数据运算分析(替代品:storm /spark等 )
- Yarn ----资源调度管理集群(可以理解为一个分布式的操作系统,管理和分配集群硬件资源)
(4) 使用Hadoop:
- 可以把hadoop理解为一个编程框架(类比:structs、spring、hibernate/mybatis),有着自己特定的API封装和用户编程规范,用户可借助这些API来实现数据处理逻辑;
- 从另一个角度,hadoop又可以理解为一个提供服务的软件(类比:数据库服务oracle/mysql、索引服务solr,缓存服务redis等),用户程序通过客户端向hadoop集群请求服务来实现特定的功能;
(5)Hadoop产生的历史
最早来自于google的三大技术论文:GFS/MAPREDUCE/BIG TABLE
(为什么google会需要这么一种技术?)
后来经过doug cutting的“山寨”,出现了java版本的 hdfs mapreduce 和 hbase,并成为apache的顶级项目 hadoop ,hbase。经过演化,hadoop的组件又多出一个yarn(mapreduce+ yarn + hdfs)。而且,hadoop外围产生了越来越多的工具组件,形成一个庞大的hadoop生态体系。
2.2、为什么需要hadoop
在数据量很大的情况下,单机的处理能力无法胜任,必须采用分布式集群的方式进行处理,而用分布式集群的方式处理数据,实现的复杂度呈级数增加,所以,在海量数据处理的需求下,一个通用的分布式数据处理技术框架能大大降低应用开发难度和减少工作量
3、hadoop集群部署安装
3.1、准备linux服务器
(centos 6.4 32位/64位;生产环境的服务器应该采用64位,可以支持更大的内存)
- 解压centos虚拟机镜像压缩包到某个目录,并用vmware打开
- 准备操作系统环境(主机名,ip地址配成static,域名和ip的本地映射hosts)
- 关闭图形界面的启动 修改/etc/inittab中的启动级别为3
- 配置防火墙(关闭) àà service iptables stop
- 为hadoop安装使用准备一个专门的linux用户(建议直接用root用户)
可选:为hadoop用户设置sudo权限 /etc/sudoers
(在我们的linux系统镜像中,有用户hadoop,密码:hadoop)
3.2、准备java环境,安装jdk,配置环境变量等
- 解压安装包
- 修改环境变量:
JAVA_HOME
PATH
3.3、安装hadoop----(解压,修改配置文件,分发到集群,初始化,启动)
Hadoop的目录结构:
bin #可执行文件(hadoop的功能操作命令) etc #配置文件 include lib #本地库文件(数据压缩编解码、本地文件系统操作) libexec LICENSE.txt NOTICE.txt README.txt sbin #可执行文件(hadoop集群进程管理的操作命令) share #开发所需要的jar包及用户帮助文档 |
3.4、修改配置文件(参考现成的配置文件xxx-site.xml)
(1) hadoop-env.sh JAVA_HOME = /home/hadoop/app/jdk_7u65
(2) core-site.xml
fs.defaultFS 指定hadoop所使用的文件系统
hadoop.tmp.dir 指定各节点上的hadoop进程所在的本地工作目录(父目录)
(3) mapred-site.xml mapreduce.framework.name : yarn
(4) yarn-site.xml
yarn.resourcemanager.hostname: server01 (yarn中的master节点所在主机)
yarn.nodemanager.aux-services : mapreduce_shuffle
(5)可选:
如果要让namenode单独配置一个工作目录,在hdfs-site.xml :
<name>dfs.namenode.name.dir</name>
<value> /mnt/driver-meta/,nfs://</value>
如果要让datanode单独配置一个工作目录,在hdfs-site.xml :
<name>dfs.datanode.data.dir</name>
<value> /mnt/driver-data-a/,/mnt/driver-data-b/,/mnt/driver-data-c/</value>
如果要让secondary namenode 在指定的机器上启动,则配置:
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop-server02:50090</value>
(6)真实生产中部署一个中、大型集群的方式:
有些公司会借助一些自动化的网络拷贝工具加快配置速度
有些公司会采用一些商业发行版(CDH--cloudera公司的产品;HORTONWORKS;MICROSOFT,IBM,EMC,INTEL)
3.5、启动hadoop
- 首先,格式化namenode bin/hadoop namenode -format
- 手动启动各服务进程
在相应服务器上启动hdfs的相关进程 :
启动namenode进程—— sbin/hadoop-daemon.sh start namenode
启动datanode进程 ——sbin/hadoop-daemon.sh start datanode
然后,验证hdfs的服务是否能正常提供:
bin/hdfs dfsadmin -report 查看hdfs集群的统计信息
- Shell脚本批量启动方式:
在任意一台服务器上执行命令:
启动hdfs服务:sbin/start-dfs.sh
启动yarn服务:sbin/start-yarn.sh
或者:直接启动hdfs+yarn服务: sbin/start-all.sh
3.6、集群内部的SSH密钥认证登陆机制配置(免密登陆)
配置的机制:在登陆方生成密钥对,然后将公钥复制给目标主机,在目标主机上将这个公钥加入授权文件 ~/.ssh/authorized_keys (该文件的权限: 600)
真实大量配置的时候直接使用ssh工具箱的工具:
1. 在登陆方生成密钥对,执行命令: ssh-keygen
2. 执行这条指令:
ssh-copy-id hadoop-server03 |
就可以免密登陆目标主机。
3.7、从一个节点的“伪分布式”hadoop集群扩展为多节点分布式集群
。。。。。