CentOS7-64bit 编译 Hadoop-2.7.4,并伪分布式安装

1.安装环境说明

  1. 本机操作系统macOS Sierra 10.12.6
  2. 采用的虚拟机VirtualBox 5.1.28
  3. 虚拟机镜像CentOS 7 64bit

2.为什么要编译

因为我们从官方下载的Hadoop安装压缩包(hadoop-2.7.4.tar.gz)是32位系统下的,如果我们将它部署在64位的系统上运行就会报错,所以我们最好在自己的64位系统上自己重新编译Hadoop源码(hadoop-2.7.4-src.tar.gz)(也可以从网上下载他人编译好的Hadoop64位安装包)。

3.编译前的准备

3.1删除预安装的openjdk(如果有)

3.1.1查看是否安装了openjdk

[root@localhost ~]# java -version
openjdk version "1.8.0_65"
OpenJDK Runtime Environment (build 1.8.0_65-b17)
OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)

3.1.2查看openjdk源

[root@localhost ~]# rpm -qa | grep java
java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64
tzdata-java-2015g-1.el7.noarch
python-javapackages-3.4.1-11.el7.noarch
javapackages-tools-3.4.1-11.el7.noarch
java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64
java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
java-1.7.0-openjdk-headless-1.7.0.91-2.6.2.3.el7.x86_64

3.1.3依次删除OPENJDK

[root@localhost ~]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64
[root@localhost ~]# rpm -e --nodeps tzdata-java-2015g-1.el7.noarch
[root@localhost ~]# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64
[root@localhost ~]# rpm -e --nodeps java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
[root@localhost ~]# rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.91-2.6.2.3.el7.x86_64

3.2关闭防火墙

3.2.1查看防火墙的状态

[root@localhost ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2017-10-19 14:45:46 CST; 22min ago
 Main PID: 607 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─607 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Oct 19 14:45:44 localhost.localdomain systemd[1]: Starting firewalld - dynami...
Oct 19 14:45:46 localhost.localdomain systemd[1]: Started firewalld - dynamic...
Hint: Some lines were ellipsized, use -l to show in full.

3.2.2关闭防火墙

[root@localhost ~]# systemctl stop firewalld.service

3.2.2禁止防火墙开机自启

[root@localhost ~]# systemctl disable firewalld.service 
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.

3.3编译环境搭建

3.3.1上传所需要的软件安装压缩包

CentOS7-64bit 编译 Hadoop-2.7.4,并伪分布式安装_第1张图片

示例:Mac在终端使用scp命令上传本地hadoop目录下的所有软件包到虚拟机的/opt/目录下
CentOS7-64bit 编译 Hadoop-2.7.4,并伪分布式安装_第2张图片

3.3.2解压所有的软件到/opt目录下

使用命令tar -zxvf 软件包位置 -C 解压到的路径,例如:

[root@localhost opt]# tar -zxvf /opt/apache-ant-1.9.4-bin.tar.gz -C /opt/

3.3.3安装java、ant和findbugs

1.配置环境变量,修改配置文件[root@localhost opt]# vi /etc/profile,在末尾添加

export JAVA_HOME=/opt/jdk1.7.0_80      
export ANT_HOME=/opt/apache-ant-1.9.4    
export FINDBUGS_HOME=/opt/findbugs-1.3.9
export PATH=$PATH:$FINDBUGS_HOME/bin:$ANT_HOME/bin:$JAVA_HOME/bin

2.使配置文件生效[root@localhost opt]# source /etc/profile

3.验证是否安装成功

[root@localhost opt]# java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
[root@localhost opt]# ant -version
Apache Ant(TM) version 1.9.4 compiled on April 29 2014
[root@localhost opt]# findbugs -version
1.3.9

3.3.4安装protobuf

1.安装一些其他需要依赖的软件(虚拟机需要联网)

[root@localhost ~]# yum -y install maven svn ncurses-devel gcc* lzo-devel zlib-devel autoconf automake libtool cmake openssl-devel

2.安装protobuf,最后一条命令输入后需要耐心等待

[root@localhost ~]# cd /opt/protobuf-2.5.0           
[root@localhost protobuf-2.5.0]# ./configure
[root@localhost protobuf-2.5.0]#make && make install

3.验证是否安装成功

[root@localhost protobuf-2.5.0]# protoc --version
libprotoc 2.5.0

4.编译hadoop源码

1.进入hadoop源码的根目录,执行编译命令(编译过程需联网)

[root@localhost ~]# cd /opt/hadoop-2.7.4-src
[root@localhost hadoop-2.7.4-src]# mvn clean package -Pdist -DskipTests -Dtar

2.编译过程时间很长,需耐心等待

3.编译成功如下图所示

CentOS7-64bit 编译 Hadoop-2.7.4,并伪分布式安装_第3张图片

5.安装hadoop

1.复制编译生成的Hadoop文件至/opt/目录下

[root@localhost ~]# cp -r /opt/hadoop-2.7.4-src/hadoop-dist/target/hadoop-2.7.4 /opt/hadoop-2.7.4

编译生成目录截图

CentOS7-64bit 编译 Hadoop-2.7.4,并伪分布式安装_第4张图片

2.配置环境变量

[root@localhost opt]# vi /etc/profile
在末尾添加
 export HADOOP_HOME=/opt/hadoop-2.7.4
 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
[root@localhost opt]# source /etc/profile

3.修改主机名为hadoop,会在后面修改hadoop的配置文件中用到

[root@localhost ~]# hostnamectl set-hostname hadoop
[root@localhost ~]# hostnamectl status
   Static hostname: hadoop
         Icon name: computer-vm
           Chassis: vm
        Machine ID: ca98320ca97f4fbebdb7d5a4bd32c052
           Boot ID: 6953000caef747c6a65be85f40921f0e
    Virtualization: kvm
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-327.el7.x86_64
      Architecture: x86-64

4.查看当前IP地址

[root@localhost ~]# ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:6e:65:f5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.43.216/24 brd 192.168.43.255 scope global dynamic enp0s3
       valid_lft 3524sec preferred_lft 3524sec
    inet6 fe80::a00:27ff:fe6e:65f5/64 scope link 
       valid_lft forever preferred_lft forever

5.设置hosts本地解析,添加主机名和当前ip进行映射关系

[root@localhost ~]# vi /etc/hosts
在末尾添加
#当前IP地址 主机名
192.168.43.216 hadoop

6.配置hadoop,伪分布式需要修改5个配置文件

(1)进入配置文件目录
[root@localhost ~]# cd /opt/hadoop-2.7.4/etc/hadoop

(2)修改第一个配置文件:hadoop-env.sh 
[root@localhost hadoop]# vi hadoop-env.sh
找到‘export JAVA_HOME=’,修改为:
export JAVA_HOME=/opt/jdk1.7.0_80

(3)修改第二个配置文件:core-site.xml      
[root@localhost hadoop]# vi core-site.xml
     
    
    
        fs.defaultFS
        hdfs://hadoop:9000
    
    
       
    
        hadoop.tmp.dir
        /opt/hadoop-2.7.4/tmp
    

        
(4)修改第三个配置文件:hdfs-site.xml
[root@localhost hadoop]# vi hdfs-site.xml
 
        
        
            dfs.replication
            1
         
   
        
(5)修改第四个配置文件:mapred-site.xml 
[root@localhost hadoop]# mv mapred-site.xml.template mapred-site.xml
[root@localhost hadoop]# vi mapred-site.xml
 
        
        
            mapreduce.framework.name
            yarn
             

        
(6)修改第五个配置文件:yarn-site.xml
[root@localhost hadoop]# vi yarn-site.xml

        
        
            yarn.resourcemanager.hostname
            hadoop
        
        
        
            yarn.nodemanager.aux-services
            mapreduce_shuffle
        

6.运行hadoop

1.首次运行需要格式化namenode(是对namenode进行初始化

[root@localhost ~]# hdfs namenode -format (或 hadoop namenode -format)

2.启动hadoop

先启动HDFS
[root@localhost ~]# start-dfs.sh
        
再启动YARN
[root@localhost ~]# start-yarn.sh

3.验证是否启动成功

[root@localhost ~]# jps
12880 SecondaryNameNode
13025 ResourceManager
12725 DataNode
13305 NodeManager
13353 Jps
12607 NameNode

4.使用浏览器查看HDFS管理界面和MR管理界面

http://虚拟机IP地址:50070 (HDFS管理界面)

CentOS7-64bit 编译 Hadoop-2.7.4,并伪分布式安装_第5张图片

http://虚拟机IP地址:8088 (MR管理界面)

CentOS7-64bit 编译 Hadoop-2.7.4,并伪分布式安装_第6张图片

7.总结

7.1创建虚拟机的一些注意事项

  1. 创建的虚拟机的内存大小和虚拟硬盘大小不要设置的太小,否则会引起一些不必要的麻烦。比如,如果虚拟机内存太小,则在后面编译Hadoop的mavn项目的时候,就有可能产生内存溢出而编译失败的情况。(我创建的时候分配了2G的内存和20G的虚拟硬盘)
  2. 虚拟机网络设置,由于安装编译的过程需要联网,所以我是用了桥接的方式,并且没有设置静态IP,所以搭建成功后每次运行hadoop前,都需要先查看当前的IP地址,然后修改主机名和IP地址的映射关系,才能正常运行。

7.2编译其他版本的hadoop

大致的编译过程基本上是一致的,只不过用到的相关依赖软件的版本号,需要从hadoop源码包的根目录中的BUILDING.txt文件中查看。下图是部分内容截图:

CentOS7-64bit 编译 Hadoop-2.7.4,并伪分布式安装_第7张图片

7.3配置ssh免登陆(可选)

按上述方式搭建好hadoop后,每次运行除了要修改修改主机名和IP地址的映射关系外(通过设置静态IP解决),在每次执行start-dfs.sh和start-yarn.sh脚本的时候,都要输入Linux的登入密码。我们可以通过配置ssh免登陆的方式,来避免每次都要输入密码。
配置方式:

1.生成ssh公钥和私钥,执行下面的命令并连续按下回车三次
[root@localhost ~]# ssh-keygen -t rsa
2.将公钥拷贝到要免密登陆的目标机器上(localhost 本机)
[root@localhost ~]# ssh-copy-id localhost

7.4设置静态ip(可选)

  1. 通过ip a命令查看网卡名称,默认情况下会有两个一个lo回环网卡,而另一个就是我们所需要修改的网卡
  2. 修改网卡的配置文件方式
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-网卡名
修改或添加下面的内容
BOOTPROTO="static"
ONBOOT="yes"
IPADDR="设置一个静态ip"
NETMASK="255.255.255.0"

7.5推荐使用远程连接的方式来操作

  1. Windows推荐使用secureCRT,进行操作和上传文件
  2. MacOS推荐使用终端,使用ssh命令进行连接执行命令,使用scp命令上传和下载文件,eg:
远程连接linux虚拟机
$ ssh [email protected]
上传本地文件到linux虚拟机
$ scp /Users/michealyan/hadoop/* [email protected]:/opt/

7.6其他说明

1.所用的到相关软件下载地址:飞机

2.参考链接:

CentOS7-64bit 编译 Hadoop-2.5.0,并分布式安装
https://my.oschina.net/u/1428349/blog/31364
Hadoop编译安装2.7.3(CentOS7)
https://www.2cto.com/net/201612/567546.html

3.仅供参考,欢迎指正

你可能感兴趣的:(CentOS7-64bit 编译 Hadoop-2.7.4,并伪分布式安装)