Hadoop的安装配置

Hadoop的安装配置

Hadoop是一个支持高可用,可拓展的海量数据储存和计算几桶

允许使用简单的编程模型来在大型分布式集群上处理海量数据集

本身可以构建在廉价集群上,不需要硬件上保证高可用,自己在架构设计时就保证了服务的可用性

Hadoop为几个模块:

Hadoop Common:通用文件,为其他模块提供支持

Hadoop HDFS:分布式文件系统,为应用提供高吞吐量的访问

Hadoop YARN:类似k8s,做了集群资源管理

如果集群中有6台服务器,每台服务器的内存各不相同,YARN可以在软件层面实现对每一台服务器的合理的内存资源的分配

YARN还可以实现作业调度

Hadoop MapReduce

主要用于并行处理大数据集

历史

大数据起源于搜索引擎

Google:爬虫、全文检索、海量数据的储存和处理

GFSGoogle File System

doug cutting(狗哥):当时做的一个搜索引擎:Nutch,根据谷歌的《Google file system》《MapReduce》,自己设计了luceneDFSMapReduceDFSMapReduce合并成为了Hadoop

雅虎收购了他的所有项目,在学会技术后,捐献给了Apache

Hbase也是他开发的,是在看到谷歌2006年发行的论文:《big table》后开发的,在big table中分为高表和宽表

高表:上亿行数据

宽表:上百万列字段

版本

每个版本相当于一个分支

1.x

包含HDFS和MapReduce

MapReduce是HDFS的上层,必须基于HDFS,同时HDFS也只能用MapReduce处理数据,耦合度非常高

2.x

包含了HDFS、MapReduce,新增了一个YARN

由于这两个耦合度太高了,而且MapReduce只能用Java开发,所以在HDFS和MapReduce中间加入了一个YARN

除此之外,Hadoop还提供了其他的借口,可以为Python等其他语言提供借口,自此,Hadoop才算真正地火起来

2.7-2.9版本是最稳定的

3.x

2017年12月左右发布的

中间计算从shuffle改用了stream,其他和2.x没什么区别

稳定性没有2.0好,但是数据不需要频繁落地

但是市面上已经有SparkSQL了,所以竞争力并不强

作用

假如一个文件的大小是2T,而一台电脑的硬盘大小为1T

我们可以选择提升这台电脑的性能,但是不能无限拓展,成本增长不友好,而且不安全

我们可以通过Hadoop进行分布式储存,分4台电脑,每台电脑读512G的内容

由一台机器保存元数据(描述数据的数据),例如:

1.zip{1.zip.1:2, 1.zip.2:2}

用来记录文件–切块–机器之间的映射关系

这台机器就是NameNode(老大)

DataNode负责保存被切开的文件块,和文件块的基本信息

会出现一个问题:如果某一个DataNode宕机

优缺点

优点:

可以储存超大文件(无限拓展)

高容错,支持数据丢失自动回复

可以构建在廉价机上面

缺点:

不管文件储存大小,namenode都会都会创建一条元数据,在存放大量小文件的时候,就会产生大量的元数据,对namenode会造成比较大的压力,而DataNode中的空间造成浪费

不支持行级别的增删改(HDFS中的数据是只读的,要删只能删整个文件)

HDFS中存放的数据分为几类,历史数据,爬虫数据,日志等,而这种数据是不需要修改的,行级别增删改会修改某个块的数据,进而影响到后续的块,还有备份也要同时修改,这个太消耗资源

安装

1.单机模式

上传安装包,解压即可,不支持HDFS,YARN,只能用MapReduce的单元测试

2.伪分布式模式

以一台机器的多个进程模拟集群环境,支持Hadoop的所有功能,但是由于机器性能限制,性能比较低(用于学习)

3.完全分布式模式

在生产环境下部署,是Hadoop安装的标准模式

主机配置

免密登录

由于在安装过程中会出现很多次要输入密码的地方,所以需要先做免密登录

在所有服务器上都执行:

ssh-keygen

3次回车不输入任何内容

得到密钥后,在主机执行(如果从机有需要也可以执行):

ssh-copy-id root@hadoop01
ssh-copy-id root@hadoop02
ssh-copy-id root@hadoop03

检查测试:

ssh hadoop02

如果不用密码登录就成功了,exit退出

这里测试环境用的是伪分布式模式

1.修改hadoop-env.sh

vim /home/app/hadoop-2.7.1/etc/hadoop/hadoop-env.sh
# The java implementation to use.
export JAVA_HOME=/home/app/jdk1.8.0_65

# The jsvc implementation to use. Jsvc is required to run secure datanodes
# that bind to privileged ports to provide authentication of data transfer
# protocol.  Jsvc is not required if SASL is configured for authentication of
# data transfer protocol using non-privileged ports.
#export JSVC_HOME=${JSVC_HOME}

export HADOOP_CONF_DIR=/home/app/hadoop-2.7.1/etc/hadoop

这里的两个export全部都改为绝对路径

2.修改 core-site.xml

vim /home/app/hadoop-2.7.1/etc/hadoop/core-site.xml

以下内容放在内

<property>
<!--用来指定hdfs的老大,namenode的地址-->
<name>fs.default.name</name>
<value>hdfs://hadoop01:9000</value>
</property> 
<property>
<!--用来指定hadoop运行时产生文件的存放目录-->  
<name>hadoop.tmp.dir</name>
<value>/home/app/hadoop-2.7.1/tmp</value>
</property>

hadoop运行时产生的临时文件,基本都在/tmp/hadoop下,在内存不足的情况下,会序列化到临时文件,腾出内存空间,保障系统运行稳定

3.修改hdfs-site.xml

vim /home/app/hadoop-2.7.1/etc/hadoop/hdfs-site.xml

4.修改mapred-site.xml

/home/app/hadoop-2.7.1/etc/hadoop的目录下,只有一个mapred-site.xml.template文件,复制一个

配置mapreduce运行在yarn上:粘贴高亮部分到标签内

<property> 
<!--指定mapreduce运行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

5.修改 yarn-site.xml

vim /home/app/hadoop-2.7.1/etc/hadoop/yarn-site.xml
<property>
<!--指定yarn的老大resourcemanager的地址-->
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<property>
<!--NodeManager获取数据的方式-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

6.修改slaves

vim /home/app/hadoop-2.7.1/etc/hadoop/slaves

如果已经配过hosts,里面直接输入一个hadoop01就可以了,如果没有的话,需要输入IP地址

7.配置系统profile的hadoop的环境变量

vim /etc/profile
#set java environment
JAVA_HOME=/home/app/jdk1.8.0_65
JAVA_BIN=/home/app/jdk1.8.0_65/bin
HADOOP_HOME=/home/app/hadoop-2.7.1
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN HADOOP_HOME PATH CLASSPATH
source /etc/profile

检测路径是否正常:

echo $HADOOP_HOME

初始化

hdfs namenode -format

启动

start-all.sh

停止

stop-all.sh

测试

jsp

正常启动需要有6个进程:

Jps/DataNode/NameNode/NodeManager/SecondaryNameNode/ResourceManager

如果进程少了一个,就去下面目录执行这条命令

/home/app/hadoop-2.7.1/sbin/hadoop-daemon.sh start namenode

少什么就在start后面加什么,注意需要全小写

在windows的浏览器访问IP地址+50070端口的访问,可以正常访问即可

可能遇到的问题

如果遇到问题,需要执行stop.sh,然后删除根目录下的tmp文件,然后格式化,重新启动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值