大数据Hadoop快速入门教程
1、Hadoop生态概况
Hadoop是一个由Apache基金会所开发的分布式系统集成架构,用户可以在不了解分布式底层细节情况下,开发分布式程序,充分利用集群的威力来进行高速运算与存储,具有可靠、高效、可伸缩的特点
Hadoop的核心是YARN,HDFS,Mapreduce,常用模块架构如下
2、HDFS
源自谷歌的GFS论文,发表于2013年10月,HDFS是GFS的克隆版,HDFS是Hadoop体系中数据存储管理的基础,它是一个高度容错的系统,能检测和应对硬件故障
HDFS简化了文件一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序,它提供了一次写入多次读取的机制,数据以块的形式,同时分布在集群不同物理机器
3、Mapreduce
源自于谷歌的MapReduce论文,用以进行大数据量的计算,它屏蔽了分布式计算框架细节,将计算抽象成map和reduce两部分
4、HBASE(分布式列存数据库)
源自谷歌的Bigtable论文,是一个建立在HDFS之上,面向列的针对结构化的数据可伸缩,高可靠,高性能分布式和面向列的动态模式数据库
5、zookeeper
解决分布式环境下数据管理问题,统一命名,状态同步,集群管理,配置同步等
6、HIVE
由Facebook开源,定义了一种类似sql查询语言,将SQL转化为mapreduce任务在Hadoop上面执行
7、flume
日志收集工具
8、yarn分布式资源管理器
是下一代mapreduce,主要解决原始的Hadoop扩展性较差,不支持多种计算框架而提出的,架构如下
9、spark
spark提供了一个更快更通用的数据处理平台,和Hadoop相比,spark可以让你的程序在内存中运行
10、kafka
分布式消息队列,主要用于处理活跃的流式数据
11、Hadoop伪分布式部署
目前而言,不收费的Hadoop版本主要有三个,都是国外厂商,分别是
1、Apache原始版本
2、CDH版本,对于国内用户而言,绝大多数选择该版本
3、HDP版本
这里我们选择CDH版本hadoop-2.6.0-cdh5.8.2.tar.gz,环境是CentOS7.1,jdk需要1.7.0_55以上
[root@hadoop1 ~]# useradd hadoop
我的系统默认自带的java环境如下
[root@hadoop1 ~]# ll /usr/lib/jvm/
total 12
lrwxrwxrwx. 1 root root 26 Oct 27 22:48 java -> /etc/alternatives/java_sdk
lrwxrwxrwx. 1 root root 32 Oct 27 22:48 java-1.6.0 -> /etc/alternatives/java_sdk_1.6.0
drwxr-xr-x. 7 root root 4096 Oct 27 22:48 java-1.6.0-openjdk-1.6.0.34.x86_64
lrwxrwxrwx. 1 root root 34 Oct 27 22:48 java-1.6.0-openjdk.x86_64 -> java-1.6.0-openjdk-1.6.0.34.x86_64
lrwxrwxrwx. 1 root root 32 Oct 27 22:44 java-1.7.0 -> /etc/alternatives/java_sdk_1.7.0
lrwxrwxrwx. 1 root root 40 Oct 27 22:44 java-1.7.0-openjdk -> /etc/alternatives/java_sdk_1.7.0_openjdk
drwxr-xr-x. 8 root root 4096 Oct 27 22:44 java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
lrwxrwxrwx. 1 root root 32 Oct 27 22:44 java-1.8.0 -> /etc/alternatives/java_sdk_1.8.0
lrwxrwxrwx. 1 root root 40 Oct 27 22:44 java-1.8.0-openjdk -> /etc/alternatives/java_sdk_1.8.0_openjdk
drwxr-xr-x. 7 root root 4096 Oct 27 22:44 java-1.8.0-openjdk-1.8.0.31-2.b13.el7.x86_64
lrwxrwxrwx. 1 root root 34 Oct 27 22:48 java-openjdk -> /etc/alternatives/java_sdk_openjdk
lrwxrwxrwx. 1 root root 21 Oct 27 22:44 jre -> /etc/alternatives/jre
lrwxrwxrwx. 1 root root 27 Oct 27 22:44 jre-1.6.0 -> /etc/alternatives/jre_1.6.0
lrwxrwxrwx. 1 root root 38 Oct 27 22:44 jre-1.6.0-openjdk.x86_64 -> java-1.6.0-openjdk-1.6.0.34.x86_64/jre
lrwxrwxrwx. 1 root root 27 Oct 27 22:44 jre-1.7.0 -> /etc/alternatives/jre_1.7.0
lrwxrwxrwx. 1 root root 35 Oct 27 22:44 jre-1.7.0-openjdk -> /etc/alternatives/jre_1.7.0_openjdk
lrwxrwxrwx. 1 root root 52 Oct 27 22:44 jre-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64 -> java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64/jre
lrwxrwxrwx. 1 root root 27 Oct 27 22:44 jre-1.8.0 -> /etc/alternatives/jre_1.8.0
lrwxrwxrwx. 1 root root 35 Oct 27 22:44 jre-1.8.0-openjdk -> /etc/alternatives/jre_1.8.0_openjdk
lrwxrwxrwx. 1 root root 48 Oct 27 22:44 jre-1.8.0-openjdk-1.8.0.31-2.b13.el7.x86_64 -> java-1.8.0-openjdk-1.8.0.31-2.b13.el7.x86_64/jre
lrwxrwxrwx. 1 root root 29 Oct 27 22:44 jre-openjdk -> /etc/alternatives/jre_openjdk
[root@hadoop1 ~]# cat /home/hadoop/.bashrc
增加如下环境变量
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_PREFIX=/opt/hadoop/current
export HADOOP_MAPRED_HOME=${HADOOP_PREFIX}
export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
export HADOOP_YARN_HOME=${HADOOP_PREFIX}
export HTTPS_CATALINA_HOME=${HADOOP_PREFIX}/share/hadoop/httpfs/tomcat
export HADOOP_CONF_DIR=/etc/hadoop/conf
export YARN_CONF_DIR=/etc/hadoop/conf
export HTTPS_CONFIG=/etc/hadoop/conf
export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin
我们将Hadoop安装在/opt/hadoop目录下面,建立如下软连接,配置文件放在/etc/hadoop/conf目录下面
[root@hadoop1 hadoop]# ll current
lrwxrwxrwx 1 root root 21 Oct 29 11:02 current -> hadoop-2.6.0-cdh5.8.2
做好如下授权
[root@hadoop1 hadoop]# chown -R hadoop.hadoop hadoop-2.6.0-cdh5.8.2
[root@hadoop1 hadoop]# chown -R hadoop.hadoop /etc/hadoop/conf
CDH5新版本的Hadoop启动服务脚步位于$HADOOP_HOME/sbin目录下面,启动服务有如下
namenode
secondarynamenode
datanode
resourcemanger
nodemanager
这里以Hadoop用户来进行管理和启动Hadoop的各种服务
[root@hadoop1 etc]# cd /etc/hadoop/conf/
[root@hadoop1 conf]# vim core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1</value>
</property>
</configuration>
格式化namenode
[root@hadoop1 conf]# cd /opt/hadoop/current/bin
[root@hadoop1 bin]# hdfs namenode -format
启动namenode服务
[root@hadoop1 bin]# cd /opt/hadoop/current/sbin/
[root@hadoop1 sbin]# ./hadoop-daemon.sh start namenode
[hadoop@hadoop1 sbin]$ ./hadoop-daemon.sh start datanode
查看服务启动情况
namenode启动完成后,就可以通过web界面查看状态了,默认端口是50070,我们访问测试下
下面关于 Hadoop 的文章您也可能喜欢,不妨看看:
Ubuntu14.04下Hadoop2.4.1单机/伪分布式安装配置教程 http://www.linuxidc.com/Linux/2015-02/113487.htm
CentOS安装和配置Hadoop2.2.0 http://www.linuxidc.com/Linux/2014-01/94685.htm
CentOS 6.3下Hadoop伪分布式平台搭建 http://www.linuxidc.com/Linux/2016-11/136789.htm
Ubuntu 14.04 LTS下安装Hadoop 1.2.1(伪分布模式) http://www.linuxidc.com/Linux/2016-09/135406.htm
Ubuntu上搭建Hadoop环境(单机模式+伪分布模式) http://www.linuxidc.com/Linux/2013-01/77681.htm
实战CentOS系统部署Hadoop集群服务 http://www.linuxidc.com/Linux/2016-11/137246.htm
单机版搭建Hadoop环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
Hadoop 2.6.0 HA高可用集群配置详解 http://www.linuxidc.com/Linux/2016-08/134180.htm
Spark 1.5、Hadoop 2.7 集群环境搭建 http://www.linuxidc.com/Linux/2016-09/135067.htm
- 想弄一台简单的区块链服务器?来这里看看!!
- NNabla:索尼开源的一款神经网络框架
- 黑客与C语言
- 浅谈分布式事务
- 漫谈千亿级数据优化实践:一次数据优化实录
- Facebook开源游戏平台ELF:一个用于实时战略游戏研究的轻量级平台
- 用不到50行的Python代码构建最小的区块链
- 学习笔记CB002:词干提取、词性标注、中文切词、文档分类
- 深入浅出 Retrofit,这么牛逼的框架你们还不来看看?
- 用Python从零开始构建反向传播算法
- 备战CDA数据分析竞赛!Kaggle赛题大揭秘
- 如何用Python将时间序列转换为监督学习问题
- Spring MVC的配置和使用
- Java可以如何实现文件变动的监听
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Java入门编程练习题
- Spark UDF加载外部资源
- Flink SQL FileSystem Connector 分区提交与自定义小文件合并策略
- Facebook面试题: 用递归和迭代手写Array.prototype.flat()
- Kubernetes插件之ip-masq-agent
- 抽丝剥茧Kotlin - 协程
- 使用Java8中的Optional类来消除代码中的null检查
- 通俗讲解从Transformer到BERT模型!
- 「R」使用有限混合模型
- Kaggle经典数据分析项目:泰坦尼克号生存预测!
- 零基础学习梯度下降算法
- Spring JPA 依赖配置
- Spring JPA 核心概念
- Spring JPA 查询
- 初学者指南:利用SVD创建推荐系统