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目前还不支持快照.
相关文章推荐
- linux中mkdir创建目录命令使用说明
- Linux命令-服务管理命令:chkconfig
- 在CentOS上安装EPEL
- linux下vim的安装以及配置
- 收藏的几个Android开发相关的网站
- opencv之haar特征+AdaBoos分类器算法流程(二)
- ubuntu14.04使用root用户登录桌面 分类: 学习笔记 linux ubuntu 2015-07-05 10:30 199人阅读 评论(0) 收藏
- Linux系统中vim设置tab键的宽度等
- 第三篇 学习OpenCV之图像变换(3)
- 第三篇 学习OpenCV之图像变换(3)
- Linux常用命令大全
- Linux信号基础
- Linux命令-文件系统常用命令:df,du,fsck,dumpe2fs
- shell脚本执行的区别
- linux命令之head、tail命令详解
- 使用CascadingDropDown实现级联式下拉框
- OpenLayers3基础教程——OL3 介绍control
- OpenLayers3基础教程——OL3 介绍control
- Perl调用shell命令方法小结
- [linux]如何安装.bin类型的文件