您的位置:首页 > 运维架构

hadoop入门(hadoop安装-hdfs简单介绍)

2015-07-05 11:00 344 查看


1.总揽

安装

hdfs的简单使用实例

hdfs的简单介绍

2.安装hadoop

好久没有上线了.是时候来一波节奏了.希望通过这次的学习能够开始了解hadoop底层的简单原理,能够开始简单的使用hadoop中的API.

还有同时开始习惯使用Linux的使用,然后做更多的配置,这个是避免不了的.

最后花了差不多大半天的时间才配置好....只能说自己的linux的基础太差了.

准备:jdk1.7+hadoop1.2.1(2.5版本除了问题了.说跟我的cent版本中没有包.然后就换了个低一点的.)+centos5.0

安装hadoop需要的以下的步骤

配置host文件
建立hadoop运行账号
配置ssh免密码连入
下载hadoop压缩包.同时解压
配置里面的各种文件
向各个节点发送配置好的hadoop
格式化namenode
启动hadoop
用jps校验是否成功

(1)配置hosts文件

#linux命令
#先转换成root的权限.可以用su命令
vi/etc/hosts


编辑如下:



(2)建立使用账号

#建立账号(在root权限下面建立)
useradd[username]
passwd[username]


我记得好像同时要修改这个账号的权限.

使用chowm命令可以实现

(3)ssh免密码配置

首先你要有ssh这个工具如果没有先上网download

#生成公钥和密钥
ssh-keygen-trsa
#会在/home/{user.name}/.ssh下有一个目录
[/code]

你会看到这两个文件生成了.id_rsa_pub是一个公钥



#复制一份公钥同时修改里面的ip地址
cpip_rsa.pubauthorized_keys
#修改成功之后就开始向每台机子发送相应的公钥
scpauthorized_keyshuser@h2:/home/huser/.ssh
#验证是否成功发送过去,如果发了一次就要将之前的删了..
sshhuser@h2
#如果不需要密码就可以登录的话就是成功了,失败了就重复上面的操作.或者重新找资料吧..


(4)上网找hadoop的压缩包,直接下载太慢了...

找到之后用命令解压

tar-zxvf[包名]


(5)然后就配置解压好的hadoop里面的配置文件..

1.2.1中的配置文件在conf里面2.x在etc/hadoop中

#hadoop-env.sh/yarn-env.sh中的JAVA_HOME修改成正确的.


core-site.xml中的配置

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.74.128:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/huser/hadoop1/tmp</value>
</property>
</configuration>


slaves中的配置



masters中的配置

h1//这个是namenode节点的ip地址.或者是他的hostname

hdfs-site.xml中的配置

<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>


mapred-site.xml中的配置

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>192.168.74.128:9001</value>
</property>
</configuration>


(6)向其他机子发送hadoop

scp-r./haoop1huser@h2:/home/huser
scp-r./haoop1huser@h3:/home/huser


(7)格式化namenode

#1.2.1中的格式化是
bin/hadoopnamenode-format
#2.5中的是
bin/hdfsnamenode-format


(8)启动hadoop

#启动
bin/start-all.sh
#关闭
bin/stop-all.sh


(9)最后可以用jps命令查看是否启动成功

或者打开localhost:50070或者localhost:50030

查看情况


3.hdfs的简单使用实例

首先我们在/home/huser下面创建一个文件夹里面装有两个文件里面有一些单词

mkdirinput
cdinput
echo"helloworld">test1.txt
echo"hellohadoop">test2.txt


然后进入hadoop跟目录中执行命令将两个文件放进hdfs中

bin/hadoopdfs-put../inputin
#导入成功之后你可以看看里面的内容
bin/hadoopdfs-ls./in/*


数据准备好了之后就可以跑一下hadoop中自带的wordcount程序

bin/hadoopjarhadoop-1.2.1-exmapls.jarwordcountinout


等了一下之后就可以看结果了(我的电脑太慢了.跑的时候有个节点还崩了)

最后我们来看看结果

bin/hadoop-cat./out/*


最后就可以看到我们输出的结果了.

4.hdfs的简单介绍

hdfs的特点

硬件错误是常态.所有需要冗余
流式数据访问.即数据批量读取而非随机读写,hadoop擅长做的是数据分析而不是事务处理.
大规模数据集
简单一致性模型,为了降低系统复杂度,对文件采用一次性写多次读的逻辑设计,即是文件一经写入,关闭,就再也不能修改
程序采用"数据就近"原则分配节点执行.

hdfs中的架构模型

namenode
DataNode
事务日志
映像文件
SecondaryName





1)NameNode

管理文件系统的命名空间
记录每个文件的数据块在各个DataNode上的位置和副本
协调客户端对文件的访问.
记录命名空间内的改动或空间本身属性的改动.
NameNode使用事务日志记录HDFS元数据的变化.使用映像文件存储文件系统的命名空间,包括文件映射,文件属性等

NameNode是单节点的在企业中压根没法用.如果崩了namenode基本上这个系统就没了.

2)DataNode

负责所在物理节点的存储管理
一次写入,多次读取.(不修改)
文件由数据块组成的(在Linux看来就是一个Block)
数据库尽量散布到各个节点.实现冗余



4.1读取数据的过程

客户端要访问HDFS中的一个文件.
首先从NameNode获得组成这个文件的数据块位置列表.
根据列表知道存储数据库的datanode
访问datanode获取数据
NameNode并不参与数据实际传输(它只负责调度.他知道数据的位置,告诉你自己去找)



4.2HDFS可靠性

冗余副本策略

可以在hdfs-site.xml中设置复制因子制定副本数量
所有数据块都有副本
DataNode启动时,遍历本地文件系统,产生一份hdfs数据块和本地文件的对应关系列表(blockreport)汇报给namenode

机架策略

集群一般放在不同机架上,机架间带宽要比机架内宽带要小
HDFS的"机架感知"
策略是:一般在本机架存放一个副本,在其它机架在存放别的副本,这样可以防止机架失效时丢失数据,也可以提高带宽利用率

心跳机制

Namenode周期性从datanode接收心跳信号和块报告
Namenode根据块报告验证元数据
没有按时发送心跳的datanode会被标记为宕机,不会再给它任何I/O请求
如果datanode失效造成副本数量下降,并且低于预先设置的阈值,namenode会检测出这些数据块,同时在合适的时机进行重新复制.
引发重新复制的原因还包括数据副本本身损坏,磁盘错误,复制因子被增大

安全模式

Namenode启动是会先经过一个"安全模式"阶段
安全模式阶段不会产生数据写
在此阶段Namenode收集各个datanode的报告,当数据块达到最小副本数以上时,会被认为是"安全"的
在一定比例(可设置)的数据块被确认为"安全"后,在过若干时间,安全模式结束
当检测到副本数不足的数据块时,该块会被复制直到达到最小副本数

校验和

在文件创立,每个数据块都产生校验和
校验和会作为单独一个隐藏文件保存在命名空间下.
客户端获取数据可以检查校验和是否相同,从而发现数据块是否损坏
如果正在读取的数据块受损,则可以继续读取其他副本





回收站

删除文件时,其实是放入回收站/trash
回收站里的文件可以快速恢复.
可以设置一个时间阈值,当回收站里文件存放的时间超过这个阈值,就被彻底的删除,并且释放占用的数据块

元数据保护

映像文件刚和事务日志是Namenode的核心数据,可以配置为拥有多个副本
副本会降低Namenode的处理速度,但增加安全性.
namenode依然是单节点,如果发证故障要手工切换

快照机制

支持存储某个时间点的映像,需要时可以是数据重返某个时间点的状态
hadoop目前还不支持快照.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: