Hadoop三大发行版本**:Apache、Cloudera、Hortonworks。** Apache 版本最原始(最基础)的版本,对于入门学习最好。 Cloudera 在大型互联网企业中用的较多。 Hortonworks 文档较好。
1.Apache Hadoop 官网地址:http://hadoop.apache.org/releases.html 下载地址:https://archive.apache.org/dist/hadoop/common/ 2.Cloudera Hadoop 官网地址:https://www.cloudera.com/downloads/cdh/5-10-0.html 下载地址:http://archive-primary.cloudera.com/cdh5/cdh/5/ (1)2008年成立的Cloudera是最早将Hadoop商用的公司,为合作伙伴提供Hadoop的商用解决方案,主要是包括支持、咨询服务、培训。 (2)2009年Hadoop的创始人Doug Cutting也加盟Cloudera公司。Cloudera产品主要为CDH,Cloudera Manager,Cloudera Support (3)CDH是Cloudera的Hadoop发行版,完全开源,比Apache Hadoop在兼容性,安全性,稳定性上有所增强。 (4)Cloudera Manager是集群的软件分发及管理监控平台,可以在几个小时内部署好一个Hadoop集群,并对集群的节点及服务进行实时监控。Cloudera Support即是对Hadoop的技术支持。 (5)Cloudera的标价为每年每个节点4000美元。Cloudera开发并贡献了可实时处理大数据的Impala项目。 3. Hortonworks Hadoop 官网地址:https://hortonworks.com/products/data-center/hdp/ 下载地址:https://hortonworks.com/downloads/#data-platform (1)2011年成立的Hortonworks是雅虎与硅谷风投公司Benchmark Capital合资组建。 (2)公司成立之初就吸纳了大约25名至30名专门研究Hadoop的雅虎工程师,上述工程师均在2005年开始协助雅虎开发Hadoop,贡献了Hadoop80%的代码。 (3)雅虎工程副总裁、雅虎Hadoop开发团队负责人Eric Baldeschwieler出任Hortonworks的首席执行官。 (4)Hortonworks的主打产品是Hortonworks Data Platform(HDP),也同样是100%开源的产品,HDP除常见的项目外还包括了Ambari,一款开源的安装和管理系统。 (5)HCatalog,一个元数据管理系统,HCatalog现已集成到Facebook开源的Hive中。Hortonworks的Stinger开创性的极大的优化了Hive项目。Hortonworks为入门提供了一个非常好的,易于使用的沙盒。 (6)Hortonworks开发了很多增强特性并提交至核心主干,这使得Apache Hadoop能够在包括Window Server和Windows Azure在内的Microsoft Windows平台上本地运行。定价以集群为基础,每10个节点每年为12500美元。HDFS(Hadoop Distributed File System)的架构概述,如图
MapReduce将计算过程分为两个阶段:Map和Reduce,如图2-25所示
1)Map阶段并行处理输入数据
2)Reduce阶段对Map结果进行汇总
图中涉及的技术名词解释如下:
1)Sqoop:Sqoop是一款开源的工具,主要用于在Hadoop、Hive与传统的数据库(MySql)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL,Oracle 等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
2)Flume:Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
3)**Kafka:**Kafka是一种高吞吐量的分布式发布订阅消息系统,有如下特性:
(1)通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
(2)高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。
(3)支持通过Kafka服务器和消费机集群来分区消息。
(4)支持Hadoop并行数据加载。
4)Storm:Storm用于“连续计算”,对数据流做连续查询,在计算时就将结果以流的形式输出给用户。
5)Spark:Spark是当前最流行的开源大数据内存计算框架。可以基于Hadoop上存储的大数据进行计算。
6)Oozie:Oozie是一个管理Hdoop作业(job)的工作流程调度管理系统。
7)Hbase:HBase是一个分布式的、面向列的开源数据库。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。
8)Hive:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
10)R语言:R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。
11)Mahout:Apache Mahout是个可扩展的机器学习和数据挖掘库。
12)ZooKeeper:Zookeeper是Google的Chubby一个开源的实现。它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、 分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
在/opt目录下创建module、software文件夹
[root@hadoop101 opt]$ sudo mkdir module
[root@hadoop101 opt]$ sudo mkdir software
(1)查询是否安装Java软件:
[root@hadoop101 opt]$ rpm -qa | grep java
(2)如果安装的版本低于1.7,卸载该JDK:
[root@hadoop101 opt]$ sudo rpm -e 软件包
(3)查看JDK安装路径:
[root@hadoop101 ~]$ which java
如果这块没有安装一下 java &hadoop~安装在/opt/software
[root@hadoop101 opt]$ cd software/
[root@hadoop101 software]$ ls
hadoop-2.7.2.tar.gz jdk-8u144-linux-x64.tar.gz
JDK、hadoop /到/opt/module目录下
[root@hadoop101 software]$ tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/ tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/[root@hadoop101 hadoop-2.7.2]$ mkdir input
将Hadoop的xml配置文件复制到input[root@hadoop101 hadoop-2.7.2]$ cp etc/hadoop/*.xml input
执行share目录下的MapReduce程序[root@hadoop101 hadoop-2.7.2]$ bin/hadoop jar
share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output ‘dfs[a-z.]+’
查看输出结果[root@hadoop101 hadoop-2.7.2]$ cat output/*
[root@hadoop101 hadoop-2.7.2]$ mkdir wcinput
在wcinput文件下创建一个wc.input文件[root@hadoop101 hadoop-2.7.2]$ cd wcinput
[root@hadoop101 wcinput]$ touch wc.input
编辑wc.input文件[root@hadoop101 wcinput]$ vi wc.input
在文件中输入如下内容
hadoop yarn
hadoop mapreduce
atguigu
atguigu
保存退出::wq
回到Hadoop目录/opt/module/hadoop-2.7.25. 执行程序
[root@hadoop101 hadoop-2.7.2]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput 6. 查看结果 [root@hadoop101 hadoop-2.7.2]$ cat wcoutput/part-r-00000 atguigu 2 hadoop 2 mapreduce 1 yarn 1(3)查看集群 (a)查看是否启动成功 [root@hadoop101 hadoop-2.7.2]$ jps 13586 NameNode 13668 DataNode 13786 Jps
注意:jps是JDK中的命令,不是Linux命令。不安装JDK不能使用jps (b)web端查看HDFS文件系统
别忘记本地hosts 要配置解析 ip haoop10x 最好服务器也配置相关服务器hosts 主机名ip解析http://hadoop101:50070/dfshealth.html#tab-overview 注意:如果不能查看,看如下帖子处理
http://www.cnblogs.com/zlslch/p/6604189.html
(c)查看产生的Log日志 **说明:在企业中遇到Bug时,经常根据日志提示信息去分析问题、解决Bug。 当前目录:/opt/module/hadoop-2.7.2/logs [atguigu@hadoop101 logs] ls hadoop-atguigu-datanode-hadoop.atguigu.com.log hadoop-atguigu-datanode-hadoop.atguigu.com.out hadoop-atguigu-namenode-hadoop.atguigu.com.log hadoop-atguigu-namenode-hadoop.atguigu.com.out SecurityAuth-root.audit [atguigu@hadoop101 logs]# cat hadoop-atguigu-datanode-hadoop101.log (d)思考:为什么不能一直格式化NameNode,格式化NameNode,要注意什么? [root@hadoop101 hadoop-2.7.2] cd data/tmp/dfs/name/current/ [root@hadoop101 current]$ cat VERSION clusterID=CID-f0330a58-36fa-4a2a-a65f-2688269b5837 [root@hadoop101 hadoop-2.7.2]$ cd data/tmp/dfs/data/current/ clusterID=CID-f0330a58-36fa-4a2a-a65f-2688269b5837 注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。所以,格式NameNode时,一定要先删除data数据和log日志,然后再格式化NameNode。Browse the file system 可以浏览网页文件系统
[root@hadoop101 hadoop-2.7.2]# hadoop fs -put a/ /
rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。 rsync和scp区别:用rsync做文件的复制要比scp的速度快**,rsync只对差异文件做更新**。scp是把所有文件都复制过去
基本语法 rsync -av $pdir/$fname $user@hadoop$host:$pdir/$fname 命令 选项参数 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称chmod 777 xsync
执行脚本 ./xsync (要发送文件目录)/opt/module/a
对称加密 :加密和解密是一把钥匙
非对称加密:加密和解密不是一把钥匙
1- 创建本地秘钥
ssh-keygen -t rsa (一直空格就可以)
2-把公钥拷贝要免密登入目标机器(从自己开始)
ssh-copy-id hadoop10x
注意 :但是这么配置 只是单向免密发送,从其它发送过来就不可以了
将./xsync .ssh 全部都发送过去
对于HDFS 来说 :DN=datanode
对于resourcemanager 来说 NM=nodemanager
Datanode 管理集群节点存储
Nodemanger 管理集群 cpu 和内存(资源)
所以NM和DN 在一台机器 不冲突哈 ~!
对于HDFS 主机:Namenode 从机:3*DN
对于YRAN 主机:ResourceManager 从机:3*NM
1 在一台机器上安装Java和Hadoop,并配置环境变量,并分发到集群其他机器 1. 拷贝文件到/opt/software,两个tar包 2. tar -zxf h"+tab" -C /opt/module 3. tar -zxf j"+tab" -C /opt/module 4. sudo vim /etc/profile
在文件末尾添加
JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144 export PATH= P A T H : PATH: PATH:JAVA_HOME/bin
HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存 source /etc/profile sudo xsync /etc/profile 在其他机器分别执行source /etc/profile####3 所有配置文件都在$HADOOP_HOME/etc/hadoop 首先配置hadoop-env.sh,yarn-env.sh,mapred-env.sh文件,
在(hadoop102)每个文件第二行添加 export JAVA_HOME=/opt/module/jdk1.8.0_144
dfs.replication 3 dfs.namenode.secondary.http-address hadoop104:50090
启动历史服务器:mr-jobhistory-daemon.sh start historyserver
hadoop102 hadoop103 hadoop104
-----------------------------凡是碰到问题 先看日志----------------------------------
Ps:一定是全新的 之前老的 可以删除
xsync /opt/module/hadoop-2.7.2
hdfs namenode -format
start-dfs.sh
在配置了Resourcemanager机器上执行
在Hadoop103上启动start-yarn.sh
在哪配置就在哪服务器上启动—这里是hadoop104
mr-jobhistory-daemon.sh start historyserver**
如果集群出了问题
stop-dfs.sh stop-yarn.sh stop-dfs.sh stop-yarn.sh cd $HADOOP_HOME rm -rf data logs 回到5hadoop-daemon.sh start namenode或datanode yarn-daemon.sh start resourcemanager或nodemanager
date—如果时间差太多 会出问题–
[****root****@hadoop102 桌面]# rpm -qa|grep ntp
ntp-4.2.6p5-10.el6.centos.x86_64 fontpackages-filesystem-1.41-1.1.el6.noarch ntpdate-4.2.6p5-10.el6.centos.x86_64执行 service ntpd status
如果显示正在运行 就关掉 service ntpd stop**
chkconfig ntpd off --关闭开启自启(如果是已停状态 就无需操作)
[****root****@hadoop102 桌面]# vi /etc/ntp.conf
修改内容如下
a)修改1(授权192.168.1.0-192.168.1.255网段上的所有机器可以从这台机器上查询和同步时间) *#*restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap为 restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap b)修改2(集群在局域网中,不使用其他互联网上的时间) server 0.centos.pool.ntp.org iburst server 1.centos.pool.ntp.org iburst server 2.centos.pool.ntp.org iburst server 3.centos.pool.ntp.org iburst为 *#*server 0.centos.pool.ntp.org iburst *#*server 1.centos.pool.ntp.org iburst *#*server 2.centos.pool.ntp.org iburst *#*server 3.centos.pool.ntp.org iburst c)添加3(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步) server 127.127.1.0 fudge 127.127.1.0 stratum 10[****root****@hadoop102 桌面]# vim /etc/sysconfig/ntpd
增加内容如下(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes
[****root****@hadoop102 桌面]# service ntpd status
ntpd 已停
[****root****@hadoop102 桌面]# service ntpd start
正在启动 ntpd: [确定]
[****root****@hadoop102 桌面]# chkconfig ntpd on
[****root****@hadoop103桌面]/[****root****@hadoop104桌面]crontab -e
编写定时任务如下:
*/10 * * * * /usr/sbin/ntpdate hadoop102
[****root****@hadoop103桌面]# date -s “2017-9-11 11:11:11”
[****root****@hadoop103桌面]# date
说明:测试的时候可以将10分钟调整为1分钟,节省时间。
