hadoop的HDFS集群搭建前期准备:

1、集群搭建

集群分类:

单节点:

  • 在一个节点上运行作业

伪分布式集群:

  • 在一个节点里面启动了多个进程来模拟这种分布式的操作,只需要一个节点

完全分布式集群:

  • 将进程完全分布到不同节点里去运行

高可用集群:

联邦集群:

2、完全分布式集群搭建:

 1.下载hadoop软件包: http://hadoop.apache.org/  --->Download--->Apache ---> https://www.apache.org/dist/hadoop/common/

2.上传到服务器

  •     在hadoop01的编辑器上alt + p 打开sftp,将压缩包hadoop-centos-6.7.tar.gz( hadoop-2.7.7.tar.gz)拖入hadoop01这台机上即可

3.解包


  •  说明:可以不用执行
  • /opt/hadoop_2_7_7/      #解包目录,在/opt目录下创建sudo mkdir hadoop2x子目录
  •    注意配置当前用户的高级权限:vi /etc/sudoers  (hadoop    ALL=(ALL)       ALL),
  •    这里我们在上一节准备工作时已经做了,没做的需要去配置,然后执行命令:
  •    tar -zxvf hadoop-2.7.7-centos-6.7.tar.gz -C /opt/hadoop2x

以上解包后,因为/opt是在root用户权限下执行的,所以操作时很多时候需要加sudo才能执行,不妨删除hadoop2x/,

直接解压到用户自己的家目录下:cd 

执行 tar -zxvf hadoop-2.7.7-centos-6.7.tar.gz 

4.了解目录结果

#如果直接解压的:
[hadoop@hadoop01 ~]$ cd  hadoop-2.7.7
[hadoop@hadoop01 ~]$ ll

#否则,解压到/opt/hadoop2x/目录下的:
[hadoop@hadoop01 ~]$ cd /opt/hadoop2x/
[hadoop@hadoop01 hadoop2x]$ ll
total 4
drwxr-xr-x. 9 root root 4096 Oct 30  2018 hadoop-2.7.7
[hadoop@hadoop01 hadoop2x]$ cd ./hadoop-2.7.7
[hadoop@hadoop01 hadoop-2.7.7]$ ll
total 136
drwxr-xr-x. 2 root root  4096 Oct 30  2018 bin
drwxr-xr-x. 3 root root  4096 Oct 30  2018 etc
drwxr-xr-x. 2 root root  4096 Oct 30  2018 include
drwxr-xr-x. 3 root root  4096 Oct 30  2018 lib
drwxr-xr-x. 2 root root  4096 Oct 30  2018 libexec
-rw-r--r--. 1 root root 86424 Oct 30  2018 LICENSE.txt
-rw-r--r--. 1 root root 14978 Oct 30  2018 NOTICE.txt
-rw-r--r--. 1 root root  1366 Oct 30  2018 README.txt
drwxr-xr-x. 2 root root  4096 Oct 30  2018 sbin
drwxr-xr-x. 4 root root  4096 Oct 30  2018 share

#bin: 可执行文件(操作命令 hdfs...)
#sbin:  可执行文件(集群启动关闭,负载均衡...)
#etc: 配置文件
#share: 共享文件(common/hdfs/mapreduce等jar)

5.进程规划

6.配置


  •  说明:可以不用执行
  • 配置前案例:以下内容先只对hadoop01机器操作(单节点模式),并且是安照 /opt/hadoop2x/解包目录下操作的。
  • vim hadoop-env.sh     #整个hadoop的环境(cd /opt/hadoop2x/hadoop/hadoop-2.7.7/hadoop/目录下)
整个hadoop的环境,hadoop进程是jvm进程,配置jdk的环境变量

export JAVA_HOME=/opt/jdk1.8.0_144

运行一个mr示例:
cd /opt/hadoop2x/hadoop-2.7.7/   #切换到解压包的文件夹下
sudo mkdir input_test    #新建一个用于测试的文件夹
cd input_test/      #切换到input_test/目录
sudo vim wordcount.txt  #创建一个新的文件,并写入一些单词,并且出现重复单词
cd ..     #切换到上层hadoop-2.7.7/目录下
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar #查看jar有哪些可执行的操作
sudo bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount input_test/ output_test 
#wordcount单词计数统计,统计input_test/文件夹下面的内容,放到output_test文件目录下去
cd output_test/   #切换到cd output_test/目录下  ll  #查看生成的文件  cat part-r-00000  #查看结果
  • 以上操作虽然可以执行,但很多时候需要启动高级用户权限,非常麻烦,所以建议直接解包在当前家目录下,为了不重复配置,将/opt/hadoop2x删除(cd /opt目录下执行sudo rm -rf hadoop2x),cd ~ 到家目录下执行tar -zxvf hadoop-2.7.7-centos-6.7.tar.gz,(也就是第3步的解包操作)

(1)、vim hadoop-env.sh   #整个hadoop的环境(cd ./hadoop-2.7.7/etc/hadoop目录下 )

hadoop分布式环境搭建步骤 hadoop分布式集群搭建_hadoop

# 整个hadoop的环境,hadoop进程是jvm进程,配置jdk的环境变量
    #找到jdk的安装目录

    export JAVA_HOME=/opt/jdk1.8.0_144

(2)、vim core-site.xml #核心位置配置(cd ./hadoop-2.7.7/etc/hadoop目录下 )

  •       默认配置官网说明地址:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/core-default.xml        #默认的文件系统,默认值(file:///本地文件系统)
  • #hdfs://ip:port   hdfs集群的入口地址(namenode:客户端的请求和响应)
  • #1.使用分布式的文件系统
  • #2.namenode所在的节点为hadoop01
  • #3.hdfs集群的访问路径: hdfs://hadoop01:9000
  • <property>
                    <name>fs.defaultFS</name>
                    <value>hdfs://hadoop01:9000</value>
            </property>
  • #临时文件的存储目录:
  • <property>
                    <name>hadoop.tmp.dir</name>
                    <value>/home/hadoop/hadoopdata</value>
            </property>
  • (3)、vim hdfs-site.xml 

               默认配置官网说明地址:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

               

hadoop分布式环境搭建步骤 hadoop分布式集群搭建_hdfs_02

  • dfs.replication: 副本数(默认3个副本) #按照默认
  • dfs.blocksize:每个块的大小(1.x:64m, 2.x:128m) #按照默认128兆
  • namenode的元数据存储的目录:
  • <property>
  •    <name>dfs.namenode.name.dir</name>
  •    <value>/home/hadoop/hadoopdata/name</value>
  • </property>
  • datanode的block信息存储的目录:
  •  <property>
  •    <name>dfs.datanode.data.dir</name>
  •    <value>/home/hadoop/hadoopdata/data</value>
  • </property>
  • secondarynamenode的节点配置:
  • <property>
  •    <name>dfs.secondary.http.address</name>
  •    <value>hadoop03:50090</value>
  • </property>
  • (4)、vim mapred-site.xml  #分布式运算编程框架配置(cd ./hadoop-2.7.7/etc/hadoop目录下 )
  • cp mapred-site.xml.template mapred-site.xml  #由于没有mapred-site.xml文件,先复制一个,再配置
  • mapreduce作业运行的平台配置:vim mapred-site.xml 
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
  • (5)、vim yarn-site.xml  #运算资源调度系统配置(cd ./hadoop-2.7.7/etc/hadoop目录下 )
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hdp02</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  • (6)、vim slaves   #用于配置dn和nm(cd ./hadoop-2.7.7/etc/hadoop目录下 )

hadoop分布式环境搭建步骤 hadoop分布式集群搭建_完全分布式集群搭建_03

主从架构的集群,一主多从。
namenode/ResourceManager --> master(主)
datanode/NodeMnager --> slave(从,所以3台机都要配置上)
hadoop01
hadoop02
hadoop03

 

7.环境变量的配置

sudo vim /etc/profile   #配置环境变量

或者在当前当前用户下(cd ~)配置也可以:

     vim ~/.bashrc 或者vim ~/.bash_profile

以上三个任选一个位置,如:vim ~/.bash_profile

hadoop分布式环境搭建步骤 hadoop分布式集群搭建_hadoop_04

export HADOOP_HOME=/home/hadoop/hadoop-2.7.7

export PATH=$PATH:$HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

最后重启一下文件:source ~/.bash_profile

hadoop分布式环境搭建步骤 hadoop分布式集群搭建_集群搭建_05

hadoop分布式环境搭建步骤 hadoop分布式集群搭建_hadoop分布式环境搭建步骤_06

8.发送到其他节点

scp -r hadoop-2.7.7 hadoop@hadoop02:~/

scp -r .bash_profile hadoop@hadoop02:~/

scp -r hadoop-2.7.7 hadoop@hadoop03:~/

scp -r .bash_profile hadoop@hadoop03:~/

统一执行:source ~/.bash_profile

统一查看:echo $PATH

9.hdfs集群(namenode)格式化

  • 在 HDFS 主节点上执行命令进行初始化 namenode 
  • hdfs namenode -format      # (只能格式化一次)

10.启动集群

  • 1.逐个进程启动
      hadoop-daemon.sh start/stop namenode/datanode/secondarynamenode
      yarn-daemon.sh start/stop ResourceManager/NodeManager
    2.整个集群启动(涉及到通信,ssh免密登录)
      start-dfs.sh/stop-dfs.sh
      start-yarn.sh/stop-yarn.sh  #(必须在rm节点启动)所以这里在hadoop02里启动
    3.全部启动
      start-all.sh/stop-all.sh
  • 注意:如果启动错误,去查看日志

11.成功检测

  • 1.jps  #查看启动进程
    2.利用图形界面
     hdfs: http://hadoop01:50070
     yarn: http://hadoop02:8088
    3.运行任务
  • 在hadoop01机上创建一个文件mkdir input
    在input/目录下vim wordcount.txt 随便写入几行内容,保存并退出
  • hdfs: hdfs dfs -copyFromLocal input/ /   或者hdfs dfs -copyFromLocal input/ hdfs://hadoop01:9000/
  • hdfs dfs -ls / 或者http://hadoop01:50070   #查询一下看是否上传
  • yarn: hadoop jar hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /input /output
  • hdfs dfs -ls / 或者 hdfs dfs -ls  hdfs://hadoop01:9000/   查看输出的内容
  • #wordcount单词计数统计,统计input/文件夹下面的内容,放到output文件目录下去