SequenceFile是一个由二进制序列化过的key/value的字节流组成的文本存储文件。在Hadoop上利用来解决小文件序列化的问题。
最近的项目之中,需要将服务器内的日志文件压缩成一个二进制的序列化文件,考虑到可以Hadoop中的HDFS子项目,可以实现该方法,同时也可以完成分布式的部署。
一.HDFS系统部署安装
首先需要部署安装HDFS系统。
1、准备两台Linux服务器:
192.168.200.101(kf09)作为NameNode节点;
192.168.200.102(kf10)作为DataNode和SecondaryNameNode(不能和NameNode在同一个机器)节点;
补充:大数据中,HDFS集群以Master-Slave模式运行,主要有两类节点:一个Namenode(即Master)和多个Datanode(即Slave)。Namenode管理者文件系统的Namespace。它维护着文件系统树(filesystem tree)以及文件树中所有的文件和文件夹的元数据(metadata)。Datanode是文件系统的工作节点,他们根据客户端或者是namenode的调度存储和检索数据,并且定期向namenode发送他们所存储的块(block)的列表。
由于Hadoop是由java开发的,所以请大家一开始就把jdk装好,务必关闭防火墙
service iptables stop。
2、修改两台服务器的主机名
vi /etc/sysconfig/network
分别修改HostName为
· HOSTNAME=kf09
· HOSTNAME=kf10
注意:此处要分别修改
保存并退出。
reboot
重启服务器,才能完成修改。
3.修改两台服务器的hosts文件
vi /etc/hosts
都添加一下内容
· 192.168.200.101 kf09
· 192.168.200.102 kf10
保存并退出。
4.以下部分在kf09(Namenode节点)上进行
cd /home
tar -zxvf hadoop-1.2.1-bin.tar.gz
cd hadoop-1.2.1/
hadoop-1.2.1-bin.tar.gz为hadoop安装包,可以到Hadoop官网下载。
4.1 配置NameNode和hadoop工作目录
vi core-site.xml
在configuration标签中添加property内容:
<configuration>
<property>
<name>fs.default.name</name> <value>hdfs://kf09:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-1.2.1</value>
</property>
</configuration>
第一个property配置的是NameNode信息,即NameNode所在机器以及端口
第二个property配置hadoop工作目录
4.2 配置副本数
vi hdfs-site.xml
在configuration标签中添加property内容(不配置的时候默认是3):
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property></configuration>
4.3 配置DataNode
vi slaves
删除localhost并添加以下节点配置:
kf10(Datanode)
4.3 配置SecondaryNameNode
vi masters
删除localhost并添加以下节点配置:
kf10(SecondaryNameNode)
4.4 配置JAVA_HOME
vi hadoop-env.sh
将export JAVA_HOME之前的注释去掉,
修改jdk路径为:export JAVA_HOME=/usr/java/jdk1.7.0_51
保存并退出
5.配置从kf09到kf10免密码登录
由于DN、NN、SNN都是java进程都需要启动,集群的成功需要每个节点的进程都启动,为了方便快速的能够启动hdfs各节点进程,我们配置ssh免密码登录后,hdfs可以启动所有节点进程,这样不需要每个节点单独启动了。
5.1设置本地ssh免密码登录三个node上都执行:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
(生成私钥和公钥,id_dsa可随意命名)
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
(将公钥内容追加到authorized_keys中)
5.2 拷贝kf09上的公钥id_dsa.pub到kf10
在kf09上:将公钥拷贝到kf10的root目录
cd /root/.ssh
scp id_dsa.pub root@kf10:~
在kf10上:将root目录中kf09传过来的公钥追加到kf10的authorized_keys文件中,
cd ~cat id_dsa.pub >> ~/.ssh/authorized_keys
可以使用
cd .ssh/more authorized_keys
检查一下kf09的id_dsa.pub是否已经追加成功
5.3免密码登录测试在node1上执行
ssh kf10
应该已经可以免密码登陆了。
6.启动hadoop
6.1将node1的hadoop压缩包拷贝到kf10
scp -r /home/hadoop-1.2.1-bin.tar.gz root@kf10:/home/
6.2在kf10上解压
cd /hometar -zxvf hadoop-1.2.1-bin.tar.gz
6.3将node的配置文件全部拷贝到kf10(保证各节点hadoop一模一样)
在kf09上面:
cd /home/hadoop-1.2.1/conf/
scp ./* root@kf10:/home/hadoop-1.2.1/conf
6.4进行格式化
在kf09上执行:
cd /home/hadoop-1.2.1/bin
格式化
./hadoop namenode -format
./start-dfs.sh
6.5查看各机器上的hdfs节点状态
[root@kf09 bin]# jps
4471 Jps4337 NameNode
[root@kf10home]# jps
4099 Jps4041 SecondaryNameNode3958 DataNode
从上面可以看出:kf09上有一个NameNode进程
kf10上有一个DataNode进程和一个SecondaryNameNode
6.6关闭hdfs
cd /home/hadoop-1.2.1/bin
./stop-dfs.sh
7.通过浏览器访问hdfs
http://localhost:50070/dfshealth.jsp
可以查看hdfs文件系统,以及健康状态等信息。至此,hdfs安装配置结束。