HDFS完全分布式搭建过程
声明:本人使用的linux版本为centos6
实验前准备
本部分为那些没有linux操作经验的人准备.若您的linux已经配置好并且正在使用.可以跳过本部分直接进入实验步骤
1、更改动态ip为静态ip
点击虚拟机右上角小电脑图标可以进行网络连接。点击system eth0可以自动进行网络连接。
下一步通过terminal修改配置文件,命令如下
# cd /etc/sysconfig/network-scripts
然后通过vim命令进入 ifcfg-eth0文件。。截图有点问题,后面三条是新添加上去的。ip用ifconfig查看自己电脑的ip、gateway使用ip的前三个地址,最后一个是2。
IPADDR=192.168.23.134
GATEWAY=192.168.23.2
NETMASK=255.255.255.0
保存退出后,重启网络服务,使用命令: service network restart
2、更改主机名
由于HDFS需要用到多台服务器,所以我们希望每台服务器有自己简单易记的主机名。这里将我们需要的四台centos服务器主机命名为node01、node02、node03、node04。
更改主机名需要修改两个配置文件
1)、etc/hosts
通过 vim /etc/hosts 命令修改hosts文件夹,新增四条记录。四个centos服务器都需要配置。
2)、/etc/sysconfig/network
通过 vim /etc/sysconfig/network 命令将该文件的hostname改为主机名。即四台服务器分别改为node01、node02、node03、node04。
然后可以通过reboot命令重启系统。
3、准备好jdk的压缩包与hadoop的压缩包
拷贝到centos系统,通过 tar -zxvf 压缩包名,解压到centos系统里。我将jdk的压缩包放在/opt/java目录下。(左边的为解压好的文件夹,右边为压缩包)
将hadoop压缩包存放在/opt/hadoop目录下
4、关闭防火墙,四个虚拟机均要关闭。
service iptables stop 暂时性关闭防火墙命令,立即生效
chkconfig iptables off 永久性关闭防火墙命令,重启后生效
实验步骤
1、时间同步(四台服务器均要操作,节点☞服务器)
①各个节点安装ntp命令 yum install ntp
②上网查找最新的时间服务器,这里使用阿里云时间服务器 ntp1.aliyun.com(本步无需输入命令)
③同步时间 ntpdate ntp1.aliyun.com
2、配置免密登录
node01->node01 node01->node02 node01->node03 node01->node04
①所有节点均要执行 ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa
②以下命令只在node01节点执行,将node01的公钥加入到其他节点的白名单中
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node01
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node02
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node03
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node04
3、所有节点配置JDK
在系统环境变量及用户环境变量中均配置。(只在系统变量中配置可能导致后期JAVA_HOME找不到)
系统环境变量配置:
通过 vim /etc/profile 命令进入系统环境变量文件中,
在文件最后加入如下代码:
export JAVA_HOME=/opt/java/jdk1.8.0_151
export HADOOP_HOME=/opt/hadoop/hadoop-2.7.5
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
下面进行用户环境变量配置:
先使用 cd ~ 进入指定文件目录
在通过 vim .bashrc 即可进入目标文件
同样在最后添加这三行代码:
export HADOOP_HOME=/opt/hadoop/hadoop-2.7.5
export JAVA_HOME=/opt/java/jdk1.8.0_151
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
配置完可以通过 source .bashrc 命令使该配置生效
4、修改hdfs-site.xml配置文件(4、5、6、7步均在node01上操作)
该文件在 /opt/hadoop/hadoop-2.7.5/etc/hadoop 目录内,
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node02:50090</value>
</property>
修改后如图:
5、修改core-site.xml配置文件
与上面的配置文件在同一目录
<property>
<name>fs.defaultFS</name>
<value>hdfs://node01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/abc/hadoop/cluster</value>
</property>
6、修改slaves配置文件
与上面的配置文件在同一目录,加上其他几个节点名。
7、将修改好的配置文件分发到其他服务器上
scp -r hadoop-2.6.5 root@node02:/opt/software/hadoop/
8、将所有的HDFS相关的进程关闭
killall java
9、格式化NameNode(创建目录以及文件)在node01节点执行
hdfs namenode -format
10、启动HDFS
start-dfs.sh
11、操作HDFS文件系统
(其实上一步不报错就说明HDFS安装成功了,这一步只是验证HDFS的功能)
①创建目录 hdfs dfs -mkdir -p /user/root
②上传文件 hdfs dfs -D dfs.blocksize=1048576 -put
(还可以通过 http://192.168.23.134:50070 ip地址加端口号在网页访问HDFS系统,看是否成功,下面是我启动成功的图片)