1 hadoop集群概要
1.1 hadoop优点
1>高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。
2> 高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
3> 高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
4> 高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
5> 低成本。与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低。
1.2 hadoop架构
1.3 名词解释
NameNode: NameNode 在一个称为 FsImage 的文件中存储所有关于文件系统名称空间 的信息。这个文件和一个包含所有事务的记录文件(这里是 EditLog)将存储在 NameNode 的本地文件系统上。FsImage 和 EditLog 文件也需要复制副本,以防文件损坏或 NameNode 系统丢失。NameNode 存储的是数据的数据即元数据。
DataNode:进行数据的存储。
SecondNameNode:对NameNode上的fdimage和edits信息进行和平保存,减轻NameNode的压力
1.4 hadoop的高可用性
hadoop集群在运行的过程中,DataNode会周期性的向NameNode发送两种信号,一个是心跳信号,一个是块状态报告或块状态列表。如果NameNode在一段时间内无法收到心跳信号,那么NameNode就会认为这个DataNode已经宕机,然后将保存在DataNode上的块进行重新复制,块状态报告是为了防止数据有丢失的情况,以为了及时的进行数据的备份。
2.hadoop集群搭建软件
2.1 版本选择
hadoop-1.2.1.tar.gz
hive-0.11.0.tar.gz
hbase-0.94.18.tar.gz
zookeeper-3.4.5.tar.gz
jdk-7u51-linux-x64.gz
2.2系统选择
centos 6.3
3.搭建准备
主机名 |
IP地址 |
角色 |
用户名 |
test.master |
192.168.21.102 |
NameNode/job Tracker |
hadoop/hadoop |
test.slave1 |
192.168.21.109 |
DataNode |
hadoop/hadoop |
4.搭建过程
4.1 软件下载
[root@test ~]#mkdir /apps [root@test ~]#cd apps [root@test apps]#wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-1.2.1/hadoop-1.2.1.tar.gz [root@test apps]#wget http://mirrors.cnnic.cn/apache/hive/hive-0.11.0/hive-0.11.0.tar.gz [root@test apps]#wget http://mirrors.cnnic.cn/apache/hbase/hbase-0.94.18/hbase-0.94.18.tar.gz [root@test apps]#wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.5/zookeeper-3.4.5.tar.gz |
4.2 安装检查
4.2.1 关闭防火墙
/etc/init.d/iptables status 查看防火墙状态
/etc/init.d/iptables stop 关闭防火墙
/etc/init.d/iptables status 确认
4.2.1.1 修改主机名
vi /etc/sysconfig/network
HOSTNAME= test.master
保存
source /etc/sysconfig/network 立即生效
主节点和数据节点都需要修改即102和109都需要更改。
4.1.1.2 绑定ip与主机名
执行vi /etc/hosts,增加一行记录192.168.1.102 test.master
备注:在所有的节点上都需要做这个操作。将IP和主机名如上对应。
4.2.3 设置ssh免密码登录
(1)生成密钥文件,执行命令ssh-keygen -t rsa,三次回车
生成授权文件cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
(2)验证 ssh localhost不需要输入密码表明成功
输入 who 可以查看有谁登陆了
******记得退出******
(3) 确保各个节点之间ssh免密码登录
在102上执行:ssh-copy-id -i ~/.ssh/id_rsa.pub test.slave1
输入test.slave1主机的登录密码
在test.slave1主机上 cat authorized_keys查看内容(多了test.master的ssh密码)
在109上执行:ssh-copy-id -i ~/.ssh/id_rsa.pub test.master
输入test.master主机的登录密码
在test.master主机上 cat authorized_keys查看内容(多了test.slave1的ssh密码)
验证:互相登录对方机器,touch /usr/local/test.txt查看是否存在。
使用什么账户生成的授权文件,只有使用相同的账户登录的时候,才可以面密码登录。
4.2.4 安装JDK
[root@test apps]#tar –zxvpf jdk-7u51-linux-x64.gz
[root@test apps]#vim /etc/profile
保存:wq
查看修改是否成功 more /etc/profile
立即生效,执行source /etc/profile
验证,执行java –version
4.2.5 安装hadoop
[root@test apps]#tar –zxvpf hadoop-1.2.1.tar.gz
[root@test apps]# ar –zxvpf hive-011.0.tar.gz
[root@test apps]# ar –zxvpf hbase-0.94.18.tar.gz
[root@test apps]# ar –zxvpf zookeeper-3.4.5.tar.gz
[root@test apps]#cd hadoop-1.2.1/conf
需要编辑以下几个文件:
hadoop-env.sh/
hdfs-site.xml/
core-site.xml/
mapred-site.xml/
master/
slaves
[root@test apps]#vim /hadoop-1.2.1/conf/hadoop-env.sh
添加JAVA_HOME路径
[root@test apps]#vim /hadoop-1.2.1/conf/hdfs-site.xml
[root@test apps]#vim /hadoop-1.2.1/conf/core-site.xml
[root@test apps]#vim hadoop-1.2.1/conf/mapre-site.xml
4.2.6复制hadoop、jdk到新的节点(从未安装jdk、hadoop如:192.168.21.109)上
[root@test apps]# scp -r /apps/hadoop-1.2.1 test.slave1:/apps/
[root@test apps]# scp -r /apps/jdk1.7.0_51 test.slave1:/apps/
[root@test apps]# scp -r /apps/hive-0.11.0 test.slave1:/apps/
4.2.7在主节点上的/apps/hadoop-1.2.1/conf里修改文件(指定那些机器是主,哪些机器是从)
执行vi masters,删除原内容,添加test.master,保存退出
执行vi slaves, 删除原内容,添加test.slave1,保存退出
1>删除各节点hadoop目录下的tmp文件夹和logs日志文件()
2>只在主节点,执行hadoop namenode -format(格式化hadoop文件系统)
1>>如果格式化过程中出现hadoop:commond not found则需要在/etc/profile下添加,并同时更新DataNode下的/etc/profile文件,确保NameNode和DataNode上的/etc/profile文件一致。
3>只在主节点,执行start-all.sh
4.2.8 启动的问题
1>主节点出现无法启动成功
查看屏幕,一般给出了解决方案。
如上图:配置文件出现了错误:
1>> 查找相应的配置文件,并将其改成
2>> source /配置文件,立即上校,或者是重启电脑
3>> jps查看进程是否还存在如存在,执行stop-all.sh
4>> start-all.sh
5>> 执行jps,看不到Namenode进程
可能原因:忘记执行格式化
配置文件出错
没有绑定主机名
2>主节点启动成功。则执行如下操作检验:
1>> jps
NsmeNode和JobTracker是必须的,如不存在,重新检查hadoop配置。
SecondaryNameNode一般可以配置在和NameNode不在一个机架上的节点。
2>>ssh test.slave1测试DataNode节点是否正常启动。
如过执行命令是这样显示,则是正确的,如果要求输入test.slave1的密码,则说明ssh的配置是不正确的,不能实现NameNode和DataNode的免密码登录。重新回到 4.2.3(设置ssh免密码登录)
3>>jps
出现如上说明DataNode配置也是正确的。
问题解决:
如果执行start-all.sh之后
如图显示,表示没有启动报错,但不代表集群是正确的
1>>在NameNode和DataNode上执行命令jps,如DataNode无进程。
2>>vim /apps/hadoop-1.2.1/logs/hadoop-root-datanode-test.slave1.log查看无法启动的原因。
4.2.9 DataNode无法启动的原因
1.防火墙一定要关闭
/etc/init.d/iptables ststus
/etc/init.d/iptables stop
2.hdfs-site.xml
哪个节点没有启动成功,查看哪个节点下的hdfs-site.xml配置文件有没有写错。
3. 主从节点使用的JDK版本必须一致。
4. hadoop/hdfs/data/current/VERSION中的namespaceID必须一致
5. hadoop下的/hdfs/data文件(dfs.name.dir或dfs.data.dir)权限必须是drwxr-xr-x. chmod -R 755 hdfs/
6. 删除logs和tmp文件夹后格式化hadoop namenode -format,从新启动。
4.2.10 hadoop集群的优化和操作
1.取消hadoop执行命令时的警告
执行vi /etc/profile,增加一行export HADOOP_HOME_WARN_SUPPRESS=0
保存退出,执行source /etc/profile
2.常用的hdfs命令
hadoop fs -ls hdfs的绝对路径 #####查看一级目录
-lsr hdfs的绝对路径 #####递归查看
-mkdir hdfs的绝对路径 #####创建文件夹
-put 第一个表示linux原路径 第二个表示hdfs路径 #####上传
-get 第一个表示hdfs路径 第二个表示linux路径 #####下载
-rmr hdfs的绝对路径 #####递归删除
-text hdfs的绝对路径 #####查看文本内容
(hadoop fs -lsr / 中的“/”其实就是hadoop分布式文件系统的更目录。
也可以写作:hadoop fs -lsr hdfs://hadoop01:9000/
查看hadoop01主机的根目录中信息,也可以查看其他的hadoop主机的目录)
********************HDFS的路径不等于Linux的路径******************************