根据HDFS文件系统的架构原理,集群中是主从关系。一个主节点master 存储所有节点的命名空间,其他的从节点保存数据结点,详细的架构原理这里都不多介绍了,主要介绍一下HDFS文件系统的实际安装部署。
- 准备结点服务器
能很好的演示HDFS的部署,这里准备了三台服务器如下:
192.168.0.113 做master
192.168.0.115 做salve1
192.168.0.114 做salve2
对这三台主机的IP地址都要在/etc/hosts中做解析:[root@namenode bin]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.18.0.172 namenode 172.18.0.173 datanode1 172.18.0.174 datanode2 192.168.0.113 namenode 192.168.0.115 datanode1 192.168.0.114 datanode2
[root@datanode2 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.18.0.172 namenode 172.18.0.173 datanode1 172.18.0.174 datanode2 192.168.0.113 namenode 192.168.0.115 datanode1 192.168.0.114 datanode2
[root@datanode1 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.18.0.172 namenode 172.18.0.173 datanode1 172.18.0.174 datanode2 192.168.0.113 namenode 192.168.0.115 datanode1 192.168.0.114 datanode2
同时还需要在每一个结点上安装好JDK,版本最好是最新的[root@namenode bin]# yum install java-1.8.0-openjdk.x86_64 -y
安装完成之后检查一下java
设置主结点到其他从结点的免密码登陆[root@namenode bin]# which java /usr/bin/java # jdk安装成功
[root@namenode soft]# ssh-keygen # 直接敲上面命令生成公钥和私钥,然后把公钥发送到其他从服务器结点上
[root@namenode soft]# ll ~/.ssh/ total 12 -rw-------. 1 root root 1679 May 18 18:31 id_rsa -rw-r--r--. 1 root root 395 May 18 18:31 id_rsa.pub -rw-r--r--. 1 root root 1598 May 18 23:19 known_hosts # 这里生成的id_rsa及时私钥,id_rsa.pub就是公钥
[root@namenode soft]# ssh-copy-id ~/.ssh/id_rsa.pub datanode1 # 将公钥拷贝到数据结点1 [root@namenode soft]# ssh-copy-id ~/.ssh/id_rsa.pub datanode2 # 将公钥拷贝到数据结点1
[root@namenode soft]# ssh datanode1 Last login: Thu May 18 23:19:39 2017 from namenode [root@datanode1 ~]# # 然后登陆就可以免密码了。
- 准备软件hadoop-1.2.1.tar.gz
下载好软件解压到/root目录下,并配置
进入hadoop-1.2.1 后配置文件./conf/core-site.xml[root@datanode1 ~]# ll total 40 -rw-------. 1 root root 1286 May 18 15:05 anaconda-ks.cfg drwxr-xr-x. 16 root root 4096 May 18 19:47 hadoop-1.2.1 -rw-r--r--. 1 root root 19248 May 18 15:05 install.log -rw-r--r--. 1 root root 4178 May 18 15:02 install.log.syslog # 解压好生成了hadoop-1.2.1目录
再配置文件./conf/hdfs-site.xml[root@datanode1 hadoop-1.2.1]# cat ./conf/core-site.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>fs.default.name</name> # namenode节点名 <value>hdfs://namenode:9000</value> #namenode域名(或IP)和端口 </property> <property> <name>hadoop.tmp.dir</name> #文件储存目录 <value>/data/htfs</value> #fs的放置位置 </property> </configuration>
[root@datanode1 hadoop-1.2.1]# cat ./conf/hdfs-site.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <name>dfs.replication</name> #block的副本数,不能超过datanode的数目 <value>2</value> # 这里有多少个数据结点就配几 </configuration>
再配置文件./conf/slaves
再配置文件./conf/masers[root@datanode1 hadoop-1.2.1]# cat ./conf/slaves datanode1 datanode2 # 把所有的数据结点都写上
最后配置好环境变量./conf/hadoop-env.sh[root@datanode1 hadoop-1.2.1]# cat ./conf/masters datanode1 # 写上主结点,也就是命名空间结点
注意:所有的结点上都这么配[root@datanode1 hadoop-1.2.1]# cat ./conf/hadoop-env.sh |grep JAVA_HOME # The only required environment variable is JAVA_HOME. All others are # set JAVA_HOME in this file, so that it is correctly defined on # export JAVA_HOME=/usr/lib/j2sdk1.5-sun export JAVA_HOME=/usr
- 格式化,启动并测试
格式化:
/root/hadoop-1.2.1/bin/hadoop namenode -format #进行格式化,创建dfs
/root/hadoop-1.2.1/bin/start-dfs.sh #启动dfs服务
然后可以在各个结点上检查java进程
通过浏览器访问:
- 准备软件hadoop-1.2.1.tar.gz