从头开始的HDFS伪分布式环境的搭建

HDFS,Hadoop Distributed FileSystem是hadoop分布式文件系统,HDFS是hadoop的核心之一,主要负责数据的存储这一方面。当数据量非常大的时候,一台机器其实是存不下的,而且,数据仅存一份的话,容易发生数据丢失等问题。所以我们需要把数据存在很多台机器上,而HDFS就是一个很好的数据存储的位置。我们要使用HDFS就要先搭建HDFS环境,而搭建HDFS其实就是搭一个集群,就是要用hadoop的方式把这个集群中的机器有机的结合起来。
我没有很多台真正的机器,所以使用了VMWARE 14虚拟机,创建了3台linux系统,将3台linux系统搭建成一个HDFS来模拟真正的HDFS环境搭建,其实本质都是一样的。
虚拟机中的linux系统,我采用的是CentOS-6.5-x86_64-minimal版本,这是一个无桌面的版本,纯命令行操作系统。
  • 创建虚拟机步骤如下:

    1)点击创建新的虚拟机。
    2)选择典型(因为自己用,要是有特殊需求,可以点自定义),然后下一步。
    3)选择稍后安装操作系统,然后下一步。
    4)客户机操作系统选择linux,版本选择CentOS 6 64位,然后下一步。
    5)虚拟机名称根据自己喜欢设置成什么,位置是你这台linux操作系统存放的位置,建议不要放在C盘,并且放在固态硬盘下(因为速度快),然后下一步。
    6)最大磁盘大小就用默认的20G就可以,然后选择将虚拟磁盘拆分成多个文件(M),然后下一步。
    7)直接点击完成,在VMWARE下我的计算机下会出现你刚创建成果的虚拟机。
    8)不要开启虚拟机!不要开启虚拟机!不要开启虚拟机!
    9)右键刚创建出来的虚拟机,选择设置,点击CD/DVD(IDE),选择使用ISO映像文件,然后找到电脑本地CentOS-6.5-x86_64-minimal.iso的存放位置,选中,点击确定。
    10)然后点击开启此虚拟机。
    11)选择Install or upgrade an existing system,点击回车,等待。
    12)然后依次选择Skip、OK,等待。
    13)点击右下角的Next,然后选择语言,English、中文简体都可以,看自己,我选择的是中文简体,然后Next。
    14)选择美国英语式,下一步,选择基本存储设备,下一步。
    15)选择是,忽略所有数据,然后填入主机名master(无所谓的,创建完后也可以改),我们要建立三台虚拟机,主机名分别为master、slave01、slave02,然后下一步。
    16)选择你想选的地区时间,下一步,然后设置超级用户root的密码,两遍,如果你设置的过于简单,则会提示你的密码不够安全,你可以头铁,选择无论如何都使用,然后下一步。
    17)选择替换现有的Linux系统,下一步,然后将修改写入磁盘,然后等待。
    18)安装完成后,选择重新引导重启虚拟机,然后输入root用户,输入密码,即可进入该linux系统,显示[root@你的主机名 ~]#即成功安装。

    安装完虚拟机,我们需要做一些准备工作,比如我们新创建的虚拟机还没有IP,我们可以设置一个静态IP,具体操作步骤如下:
    1)输入命令:vi /etc/sysconfig/network-scripts/ifcfg-eth0
    2)按i进入插入模式,然后改为ONBOOT=yes、BOOTPROTO=static,在后面追加IPADDR=192.168.24.100、GATEWAY=192.168.24.2、DNS1=8.8.8.8。然后按esc键,输入:wq,保存并退出。(我的IP是这样,只要IPADDR和GATEWAY前三个点的数字一样就可以,GATEWAY最后一定是2)
    3)点击VMWARE的编辑,选择虚拟网络适配器,点击VMnet8,然后点击右下角更改设置,选择名称下的VMnet8,点击VMnet信息下的NAT模式 ,然后将左下角的子网改成192.168.24.0,,然后点击NAT设置,将网关改为192.168.24.2,然后确定,确定。
    4)输入命令:service network restart重启网卡,输入命令:ifconfig,如果出现IP为192.168.24.100,即为成功,如果失败,看看前三步哪里做错了。
    5)输入命令:vi /etc/hosts,将192.168.24.100 master
    192.168.24.101 slave01
    192.168.24.102 slave02填入并保存退出。(这步是为了后面配置hadoop的时候不来回切root用户改放在这的)
    6)输入命令:chkconfig iptables off关闭防火墙,输入命令:vi /etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,然后保存退出。输入命令:reboot重启虚拟机。

    设置完静态IP,我们可以根据IP用其他软件连接虚拟机,我们可以在我们自己的电脑系统下操作,而不用再虚拟机哪个黑框框下了,比如在windows系统下操作,我用的是xshell连接虚拟机,还有MobaXterm等软件也可以。
    我们搭建HDFS环境我们还需要安装JDK,这里我安装的是jdk-8u172-linux-x64.tar.gz版本。

  • 安装JDK步骤如下:

    1)输入命令:useradd hadoop创建一个新用户,然后输入命令passwd设置用户密码为123456,需要输入两次。输入命令:mkdir /opt/wdp创建wdp文件夹。然后输入命令:cd /opt,输入命令:chown hadoop:hadoop wdp将wdp文件夹权限改为hadoop用户和hadoop组。输入命令su hadoop切到hadoop用户(注意,后面操作都是hadoop用户操作,如无特殊说明,不要切换用户)。
    2)输入命令:mkdir /home/hadoop/soft创建soft文件夹。输入命令cd /home/hadoop/soft进入文件夹,然后将JDK解压包通过xshell从windows上传到此目录下。然后输入命令:tar -zxvf jdk-8u172-linux-x64.tar.gz -C /opt/wdp将jdk解压到/opt/wdp目录下。
    3)输入命令cd /opt/wdp,输入命令:mv jdk1.8.0_172 jdk将文件夹名字改为jdk,然后su root切换到root用户,输入命令:vi /etc/profile进行环境变量配置,在最后添加export JAVA_HOME=/opt/wdp/jdk,然后再添加export PATH=$PATH:$JAVA_HOME/bin,然后保存退出。输入命令:exit退出root用户回到hadoop用户,输入命令:source /etc/profile(注意一定不要改错环境变量,如果错了没编译还是有机会改的,要是编译完了PATH配错了,可能就没得了)编译文件,然后输入:javac,出来一堆东西而不是commad not found即配置jdk成功。

    jdk配置成功后,就可以进行hadoop安装了。

  • hadoop安装步骤如下(注意当前还是hadoop用户哦):

    1)cd /home/hadoop/soft,将hadoop解压包上传到此文件夹。我这里用的是hadoop-2.6.1.tar.gz版本。
    2)tar -zxvf hadoop-2.6.1.tar.gz -C /opt/wdp
    cd /opt/wdpmv hadoop-2.6.1 hadoop将文件夹的名字改为hadoop
    3)su root切到root用户。输入命令:vi /etc/profile,最后添加export HADOOP_HOME=/opt/wdp/hadoop,将PATH那条修改为export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin,保存并退出。
    4)exit,退出root用户回到hadoop用户。source /etc/profile,输入:hadoop,出来一堆东西而不是commad not found即配置hadoop成功。
    5)cd /opt/wdp/hadoop/etc/hadoopvi core-site.xml,将内容

<configuration>
</configuration>

修改为

<configuration>
              <property>
                    <name>fs.default.name</name>
                    <value>hdfs://master:8020</value>
              </property>
            </configuration>
        hdfs协议,主机IP(应为配置了hosts文件所以可以是master而不用写192.168.24.100),端口号  
    6)`vi hadoop-env.sh`,将`export JAVA_HOME=${JAVA_HOME}`修改为`export JAVA_HOME=/opt/wdp/jdk`,修改JDK路径。
    7)`vi hdfs-site.xml`,将`<configuration></configuration>`修改为
<configuration>
         <property>
            <name>dfs.replication</name>
            <value>2</value>
          </property>
          <property>
            <name>dfs.namenode.name.dir</name>
            <value>/opt/wdp/hadoop/dfs/name</value>
          </property>
          <property>
            <name>dfs.datanode.data.dir</name>
            <value>/opt/wdp/hadoop/dfs/data</value>
          </property>
</configuration>
设置备份数量,设置数据存放的位置。
8)`vi mapred-site.xml`,然后将该文件内容改为
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
 <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>
9)vi yarn-site.xml,将
<configuration>
<!-- Site specific YARN configuration properties -->
</configuration>

改为

<configuration>
<!-- Site specific YARN configuration properties -->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
</configuration>
10)rm slaves,然后vi slaves,输入192.168.24.100 master
                               192.168.24.101 slave01
                               192.168.24.102 slave02保存并退出。
到目前为止,3台虚拟机都是进行上述步骤,保证其除了主机名和IP地址,jdk、hadoop什么的配置都一样。
因为都配置完毕,要准备格式化了。但是有一个问题,就是三台虚拟机之间,要组成集群,那就要互相访问,那就需要我们人为的一直输入密码,这很麻烦,所以我们要先进行三台机器之间的免密登录,然后再格式化。
  • 免密登录步骤如下:

    1)在三台虚拟机上分别cd ~进入家目录,然后分别ssh-keygen -t rsa连续敲击回车(大约4下),就会出现一堆图形之类的。这时在家目录下回创建一个.ssh文件,在.ssh文件中回存在该用户的公钥和私钥,私钥是自己留着的,公钥发给谁,你就能免密登录谁。(如果没有ssh,则输入命令:yum -y install openssh-clients进行下载,注意下载时要有网络哦)
    2)slave01和slave02分别使用cd .ssh进入.ssh文件夹下,然后分别输入命令:scp id_rsa.pub hadoop@master:/home/hadoop/.ssh/id_rsa.pub002scp id_rsa.pub hadoop@master:/home/hadoop/.ssh/id_rsa.pub003。将slave01和slave02公钥通过scp发送给master,放在master的/home/hadoop/.ssh目录下,分别叫id_rsa.pub002和id_rsa.pub003。
    3)在master中输入命令:cd ~/.ssh进入.ssh目录下。然后输入三条命令,分别为:

cat id_rsa.pub >> authorized_keys
cat id_rsa.pub002 >> authorized_keys
cat id_rsa.pub003 >> authorized_keys

将3台虚拟机的公钥追加到authorized_keys中,然后chmod 600 authorized_keys修改authorized_keys权限为600,只可以自己读写,代表authorized_keys中,别人能进来是经过我自己允许的。
4)在master中分别输入命令:

scp authorized_keys hadoop@slave01:/home/hadoop/.ssh/
scp authorized_keys hadoop@slave02:/home/hadoop/.ssh/

将装有所有公钥的authorized_keys发给slave01和slave02。
5)可以测试一下是否可以免密登录,比如你在master中,然后输入ssh slave01如果不需要密码就登陆,那么就可以了,别忘了exit退出哦。如果失败了,你可以看看哪步错了,要是看不出来就把.ssh目录删了重新开始免密登录把。

  • 配置完免密登录我们就可以格式化了。格式化代码如下:hdfs namenode -format.(注意只在master上进行格式化哦,因为我们要将master当做主节点,slave01和slave02当做从节点)

    如果最后出现了SHUTDOWN_MSG: Shutting down NameNode at master/192.168.24.100的提示,那么你就格式化成功了。

  • 启动hadoop。

    因为master是主节点,在master中分别输入start-yarn.shstart-dfs.sh,启动hdfs等待。都完成后,输入命令:jps,查看当前启动的进程,如果master中有DataNode、Jps、SecondaryNameNode、NodeManager、ResourceManager、NameNode 6个进程。其他两个从节点也都输入命令:jps。如果有NodeManager、DataNode、Jps三个进程。最后打开浏览器,在地址栏中输入192.168.24.100:50070,进入点击Datanodes,如果Node里出现了三个节点,那么恭喜你,你成功了。如果没不对,你看看之前哪步做错了,先stop-yarn.shstop-dfs.sh停止,然后删除3台虚拟机的/opt/wdp/hadoop下的dfs和logs两个目录,重新格式化尝试一下(保证其他都对)。

猜你喜欢

转载自blog.csdn.net/gjwcsdn/article/details/81260283
今日推荐