搭建HDFS分布式文件系统

2018-03-03 12:30
网络安全和信息化 2018年2期
关键词:命令密钥账户

HDFS 即Hadoop分布式文件系统,之所以使用 HDFS,主要是因为普通的硬盘虽然容量日益增大,但是访问速度却比较低。例如,对于常用的1TB的硬盘来说,平均数据传输率大概在150 MB/秒左右,如果存满了数据,要将全盘的数据读取出来,要花费两个半小时。为了提高速度,可以采取分布读取的方式加以解决。例如,

可以将原来单个1TB硬盘的数据分散存储100个1T的硬盘上,让每个磁盘存储1%的内容,之后让这些磁盘并行运行,这样,通过执行并发读取操作,只需花费两分钟左右的时间,就可以读取原盘上的所有数据。

HDFS工作模式

利用HDFS分布式文件系统,就可以根据以上原理,有效提升磁盘的访问速度,即通过DataNode节点的添加和删除,实现HDFS存储空间动态的增加和减小。HDFS实际上由群集组成,包含Master和Slave两类角色。在Master角色上运行NameNode(名称节点),在Slave角色上运行的是DataNode(数据存储节点)。Slave角色承担存储数据的任务,Master角色仅仅作为客户端的访问点和群集的调度服务器使用。

在DataNode节点上,数据以分块的形式存储。例如,对于10个DataNode节点来说,当存储1000GB的数据时,在每个节点上分别存储100GB,进行并发读取速度自然大大提高。因此,对于HDFS来说,Slave角色增多,不仅可以增大存储容量,还可以提高读写效率和安全性。

配置实验环境

在本例中,使用了五台CentOS 6.5主机,一台作 为Master主 机, IP为192.168.1.100,其他作为Slave主 机,IP从192.168.1.101到192.168.1.104。为了便于操作,对其进行更名操作。例如,在Master主机上执行“vim /etc/sysconfig/network”命令,在编辑界面 中 的“HOSTNAME=” 栏设置合适的主机名,例如“hdfszhuji”。 执 行“hostname hdfszhuji”、“bash”命令,使其重启后可以永久地更改主机名。

执 行“vim/etc/sysconfig/networkscripts/ifcfg-eth0” 命令,在网络配置修改界面中 将“ONBOOT”的 值 设 置为“yes”, 将“BOOTPROTO”的 值 设 置 为“static”,将“IPADDR” 的 值 设 置为“192.168.0.10”, 将“NETMASK”的值设置为“255.255.255.0”。保存文件后,执行“/etc/init.d/network restart”命令,重启网卡使配置生效。

执 行“vim /etc/hosts” 命 令,在 其 中添 加“192.168.1.100 hdfszhuji”、“192.168.1.101 hdfscong1”、“192.168.1.102 hdfscong2”、“192.168.1.103 hdfscong3”、“192.168.1.104 hdfscong4”等多行内容,将指定的地址与主机名绑定。为了便于通讯,执行“iptables -F”命令,来禁用防火墙。按照同样的方法,对其余的Slave主机进行配置,名称从“hdfscong1”到“hdfscong4”。

为了便于安装软件,需要配置YUM源,方法是,执行“cd /etc/yum.repos.d”、“rm -rf CentOSDebuginfo.repo CentOSVault.repo CentOS-Base.repo”、“vim CentOSMedia.repo”命令,在该文件中只保留“name=CebtOS-$releasever -Media”、“baseurl=file:///media”、“gpgcheck=0”、“enable=1”、“gpgkey=file:///etc/pki/rpm-gpg/RPM-GPGKEY-CentOS-6”等内容,之后插入CentOS 6.5光盘,执行“mount /dev/cdrom /media/”命令,配置好YUM源。

安装所需软件

搭建HDFS文件系统需要Java组件的支持,所以需要安装JDK组件。执行“tar zxvf jdk-7u65-linux-x64.gz”命令,对JDK包进行解压。执行“mv jdk1.7.0_65//usr/local/jave”, 将 其移动到指定目录。执行“vim /etc/profile” 命令,在该配置文件中的“export PATH”行下面添加“export JAVA_HOME=/usr/local/jave” 和“export PATH=$PATH:$JAVA_HOME/bin”两行,之后保存该文 件。 执 行“source /etc/profile”命 令,执 行刷新操作。执行“java-version”命令,查看Java配置信息。执行“useradd hadoop”命 令,创 建 名 为“hadoop”的账户名。执行“echo "hadpass" | passwd hadoop --stdin”命令,设置密码,密码为“hadpass”。

在所有主机上分别执行以上命令,来安装JDK组件和添加账户操作。为了让名为“hdfszhuji”的主机可以直接控制其他主机,执行“su - hadoop”命令,切换到“hadoop”账户环境中,执行“ssh-keygen”命令,来生成SSH密钥对。

在出现的“Enter file in which to save key(/home/hadoop/.ssh/id_rsa)”栏中直接回车,在“enter passphrase” 栏中输入合适的密码,例如“key123”,来生成所需的密钥。执行“ssh-copy-id -I.ssh/id_ras.pub hadoop@hdfscong1”命令,按照提示输入名为“hdfscong1”主机的密码,将密钥复制到该机中。

分别执行执行“sshcopy-id -I .ssh/id_ras.pub hadoop@hdfscong2”、“ssh-copy-id -I .ssh/id_ras.pub hadoop@hdfscong3”、“ssh-copyid -I .ssh/id_ras.pub hadoop@hdfscong4” 命 令,将密钥分别复制到其余的主机上。为了测试是否可以顺利访问,可以执行“ssh hadoop@hdfscong1”,按照提示输入该密钥的密码(即上述“key123”),如果不出现错误提示,说明上述操作没有问题。

安装和配置Hadoop

执行“bash hdfszhuji”,“exit”命令,返回root环境。之后执行“tar -zxvf hadoop-x.x.0.tar.gz” 命令,解压Hadoop安装包,因为Hadoop经过了编译处理,所以可以直接使用,这里的“hadoop-x.x.0.tar.gz” 表示具体的版本号。

注意,在安装Hadoop时需要以root身份进行,在运行时则需要使用“hadoop”账户身份进行。

执行“mv hadoop-2.4.0/usr/local/hadoop”,将 其移动到指定目录中。执行“cd/usr/local/hadoop”,进 入到指定目录,执行“chown -R hadoop:hadoop /usr/local/hadoop”命令,将该目录的所有者设置为“hadoop”账户。

执 行“v i m /e t c/profile” 命 令,在 该 配置文件中的上述位置中添 加“export HADOOP_HOME=/usr/local/hadoop”一 行, 并 将“export PATH=$PATH:$JAVA_HOME/bin”的内容修改为“export PATH=$PATH:$JAVA_HOME/b i n:$H A D O O P_H O M E/bin:$HADOOP_HOME/sbin”,之后保存该文件。执行“source /etc/profile”命令,执行刷新操作。在其他的主机上分别执行以上操作,来安装并配置Hadoop。

在名为“hdfszhuji”的主机上执行“su -hadoop”命令,切换到Hadoop账户环境。执行“cd /usr/local/hadoop/etc/hadoop”、“vim hadoop-env.sh”命令,将该文件中的“export JAVA_HOME=${JAVA_HOME}”一行的内容修改为“export JAVA_HOME=/usr/local/java”,指明JAVA的路径。

执 行“vim core-site.xml”命令,在该文件中的“” 之间 添 加“”、“”、“”、“”,“”、“”、“”、“”、“”,注意需要逐行输入,之后保存该文件。

执行“mv mapred-site.xml.template mapredsite.xml”,对该模板文件进行更名处理。执行“vim mapred-site.xml” 命 令,对该文件进行编辑,在其中的“”之间添加“”、“mapred.j o b.t r a c k”、“”、“”、“”、“”、“”、“”,之后保存该文件。

接着,执行“vim hdfssite.xml”命令,在其中的“”之间添加“”、“”、“”、“”、“”、“”、“”、“” “”、“”、“”、“”、“”、“”、“”、“”。 其 中 的“dfs.replication”表示节点主机的数量,这里为4台。

启动Hadoop群集

执 行“vim masters”命 令,输 入“hdfszhuji”,即Master节点主机名。执行“vim slaves” 命 令,逐 行 输 入“hdfscong1”,“hdfscong2”,“hdfscong3”,“hdfscong4”, 即 四 个Slave主机名。之后,分别执 行“scp /usr/local/hadoop/etc/hadoop/*hdfscong1: /usr/local/hadoop/etc/hadoop/”、“scp /usr/local/hadoop/etc/hadoop/* hdfscong2:/u s r/l o c a l/h a d o o p/etc/hadoop/”、“scp /usr/local/hadoop/etc/hadoop/* hdfscong3: /usr/local/hadoop/etc/hadoop/”、“scp /usr/l o c a l/h a d o o p/e t c/hadoop/* hdfscong4: /usr/local/hadoop/etc/hadoop/” 命 令,将 上 述Hadoop配置文件分别复制到Hdfscong1到Hdfscong4主机上。

注意,在复制是需要输入密码,该密码为上述RSA密钥对的密码。

执 行“hdfs namenode-format”命令,对 Master主机进行初始化操作。当初始化成功后,执行“ll /usr/local/hadoop/name/”命令,如果显示名称为“current”文件,说明以上操作是正确的。

执行“start -all.sh”命令,来启动群集,在此期间,先要输入hdfszhuji主机的密码,即上述“Hadoop”账户的密码“hadpass”。之后需要多次输入上述RSA密钥对的密码,来分别启动Hdfscong1到Hdfscong4等主机。之后执行“jps”命令,当出现“4113 Jps”、“3718 SecondaryNameNode”、“3853 ResourceManager”、“3545 NameNode”之类的内容时,说明Hadoop已经启动完成。

打开Firefox浏览器,访问“http://192.168.1.100:50070”网 址,在 控 制 页面 的“Overview”栏 中 显示Hadoop启动的摘要信息,包括其启动时间、版本等。在“Summary”栏中 的“Configured Capacity”栏中显示HDFS磁盘总容量,在“DFS Used”栏中显示已经使用的容量,在“DFS Used%”栏中显示空间利用率,在“Live Nodes”栏中显示处于活动状态的节点数量。至此,HDFS分布式文件系统已经部署完成,之后就可以对其进行管理了。

例如,执行“hadoop fs -ls /”命令,可以查看Hadoop根目录下的内容。在初始状态下,其中没有任何内容。执行“hadoop fs -mkdir /data”命令,在其下可以创建名为“data”的目录。执行“hadoop fs -put /usr/local/file/* /data”命令,可以将指定目录下的所有文件复制到上述“Data”目录中,实现在Hadoop中的文件存储操作。执行“hadoop fs -ls/data”命令,可以查看其中的内容。执行“hdfs dfsadmin-report”命令,可以查看各节点的详细信息。

猜你喜欢
命令密钥账户
只听主人的命令
幻中邂逅之金色密钥
密码系统中密钥的状态与保护*
如何切换Windows 10本地账户与微软账户
探索自由贸易账户体系创新应用
外汇账户相关业务
TPM 2.0密钥迁移协议研究
父亲的股票账户
移防命令下达后
一种对称密钥的密钥管理方法及系统