Hadoop单机环境搭建(JDK+Hadoop)

我在安装的过程中的参考资料:博客和《Hbase不睡觉书》

1. 服务器选择

阿里云服务器基本信息

注意本文中的系统是centos 7.3, 与centos7之前的版本可能有所不同。

2. 软件安装版本

2.1. 安装包下载

软件下载地址(各自官网):JDK
和Hadoop目录下的Hadoop-2.8.4选择hadoop-2.8.4.tar.gz(编译好不加密的包)

jdk与Hadoop版本

2.2 安装包上传到服务器

rz名命令上传。如果现实不存在这个命令,则说明未安装rz,执行yum -y install lrzsz安装后,上传jdk和Hadoop安装包到服务器 rz 选择要上传的安装包即可。解压tar -zxvf XXX.tar.gz
本课题中,解压后的目录分别为:/usr/local/jdk1.8.0_201/usr/local/hadoop-2.8.4

3. 安装过程详解

3.1. 关于安装jdk的安装

在第二节中解压jdk安装包后,我的解压目录为/usr/local/jdk1.8.0_201,进行环境变量的设置:vim /etc/profile在profile文件底部加入:

export JAVA_HOME=/usr/local/jdk1.8.0_201
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=.:${JAVA_HOME}/bin:$PATH

检测安装效果:输入java -version显示如下即可:

[root@test01 ~]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

3.2 安装Hadoop

3.2.1. 修改主机名与IP映射

  • 修改主机名
    后续的Hadoop配置中需要用到主机名,阿里云自带的主机名太过繁琐,因此首先修改主机名为test01,执行命令hostnamectl set-hostname 主机名
[admin@iZwz9ffhe5jorfx9vdlmhmZ ~]$ hostname
iZwz9ffhe5jorfx9vdlmhmZ
[admin@iZwz9ffhe5jorfx9vdlmhmZ ~]$ hostnamectl set-hostname test01

在阿里云服务器管理界面点击重启或者执行reboot命令,再次连接服务器,可以得到

Welcome to Alibaba Cloud Elastic Compute Service !

[admin@test01 ~]$ 

至此代表主机名更改成功

  • 编辑Network文件
    编辑network文件(此为Centos 7之前的修改方式,本实验为防止后续出错,也进行了设置)vim /etc/sysconfig/network 之后将该文件中加入HOSTNAME=test01,修改之后如下所示:
NETWORKING=yes
HOSTNAME=test01
NETWORKING_IPV6=no
PEERNTP=no
  • 设置IP映射
    输入vim /etc/hosts添加本机的IP映射,修改之后文件如下:
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.17.15.27  test01  //注意此处设置的是内网ip
47.106.221.38 test1

最后一行为添加的本机IP地址(此处为阿里云显示的公网IP)和修改后的HOSTNAME值

3.2.2 关闭防火墙

关闭防火墙:systemctl stop firewalld.service

3.2.3 设置免密登陆

设置免密登陆,是为了防止以后启动hadoop时,每次启动一个节点都需要输入密码。分别执行如下命令:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

3.2.4 Hadoop环境配置

配置profile文件

配置Hadoop系统变量执行vim /etc/profile,在profile下面加入:如下环境变量

export HADOOP_HOME=/usr/local/hadoop-2.8.4
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:$PATH

执行source /etc/profile使文件修改生效

修改 hadoop-env.sh

Hadoop运行在JDK之上,原本hadoop-env.sh文件中使用的是相对路径,但是在一些环境中会报错,因此此处修改为绝对路径。执行vim hadoop-env.sh
export JAVA_HOME=${JAVA_HOME}更改为export JAVA_HOME=/usr/local/jdk1.8.0_201
同时,可以在此处对hadoop的内存环境进行配置,在之间添加以下内容::

export HADOOP_NAMENODE_OPTS=" -Xms1024m -Xmx2014m -XX:+UseParallelGC"
export HADOOP_DATANODE_OPTS=" -Xms1024m -Xmx2014m"
export HADOOP_LOG_DIR=/data/logs/hadoop   //记得在命令行建立这个文件夹
修改 core-site.xml

执行vim core-site.xml,修改core-site.xml文件,在之间添加以下内容:


        hadoop.tmp.dir
        /root/hadoop/tmp
        Abase for other temporary directories.
   
   
        fs.default.name
        hdfs://test01:8020

修改hdfs-site.xml文件

执行vim hdfs-site.xml,修改hdfs配置,在之间添加以下内容:


dfs.replication
1


dfs.namenode.name.dir
file:///root/hadoop/dfs/name


dfs.dataenode.data.dir
file:///root/hadoop/dfs/data

注意此处需要在命令行中新建相应的文件夹,分别执行mkdir /root/hadoop/dfs/namemkdir /root/hadoop/dfs/data

修改mapred-site.xml文件

如果没有 mapred-site.xml 该文件,就复制mapred-site.xml.template文件并重命名为mapred-site.xml,所用命令:cp mapred-site.xml.template mapred-site.xml,肤质成功后,编辑mapred-site.xml文件,加入以下内容


    mapred.job.tracker
    test01:8021


      mapred.local.dir
       /root/hadoop/var


       mapreduce.framework.name
       yarn

注意此处需要在命令行中新建相应的文件夹,执行mkdir /root/hadoop/var

4.安装成功标志

4.1 初始化

第一次启动hadoop需要进行初始化,执行hadoop namenode -format得到以下结果

初始化结果

初始化成功

初始化成功后,可以在/root/hadoop/dfs/name 目录下(该路径在hdfs-site.xml文件中进行了相应配置,并新建了该文件夹)新增了一个current 目录以及一些文件。 如下图所示:


初始化结果

4.2 hadoop 启动

Hadoop 主要是启动HDFS和YARN

4.2.1 启动HDFS

进入hadoop安装目录下的sbin目录 启动HDFS ,执行:start-dfs.sh。得到以下结果,则HDFS启动成功。

成功启动hdfs的结果

4.2.1 启动YARN

进入hadoop安装目录下的sbin目录启动YARN,执行start-yarn.sh
得到以下结果,则YARN启动成功。

成功启动YARN的结果

此时查看当前所执行的进程,执行jps,得到以下结果,说明安装成功

jps结果

常见错误

  • jdk版本造成的错误
    Centos 7及以上的版本中可以选择yum直接安装openjdk,我第一次使用的是openjdk版本,openjdk在后续的hadoop安装过程中会遇到各种问题,包括:
  1. openjdk与jdk的目录结构差异造成的问题
    /root/hadoop/bin/hdfs: line 204: /opt/jdk/bin/java: No such file or directory /root/hadoop/bin/hdfs:
    注意JAVA_HOME的值必须具体到二进制java命令所在bin目录的上一级例如/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.201-2.6.16.1.el7_6.x86_64/jre而不是仅仅包括jdk版本的/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.201-2.6.16.1.el7_6.x86_64
  2. openjdk是精简版的jdk,可能导致某些命令不存在
    JPS命令不存在
    java-1.7.0-openjdk contains only the JRE. jps is part of the openjdk development package. Refer here.
    解决方案:安装缺少的包yum install java-1.7.0-openjdk-devel
  • Hadoop配置造成的问题
    FATAL namenode.NameNode: Failed to start namenode. java.lang. IllegalArgumentException: URI has an authority component
    问题在于 /hadoop/etc/hadoop/hdfs-site.xml文件中关于dfs.namenode.name.dir 和dfs.datanode.data.dir值的设置有误,检查目录是否存在等

你可能感兴趣的:(Hadoop单机环境搭建(JDK+Hadoop))