大数据专栏之工具安装(一):CENTOS安装JAVA+HADOOP伪分布模式

近期要使用Hadoop这一套大数据工具,包括Hadoop、Hive 、Hbase 、 Spark 、 Flume 、 Sqoop、 Kafka、Zookeeper、impala、presto等在数据中台各层级会用到的工具。

在接下来的一段时间里,作者将在此专栏分享以下内容,敬请关注:

  1. 笔者将整理这一套工具的的从零开始安装和使用;
  2. MR、DAG、HDFS、GFS等底层概念整理;
  3. 数据ETL相关内容:数据质量、数据同步、数据血缘、数据治理以及数据库建模;
  4. 基于PYTHON/R 的数据分析案例分享以及相关工具安装教程;
  5. 基于阿里云的系列工具使用文档总结及案例分享。

安装环境:

1. Centos7.6
2. Centos8

linux中准备临时安装包存放位置

mkdir /setups

1 Java环境安装

1.1 Java 版本支持

  • Apache Hadoop 3.x 版本 现在只支 持 Java 8
  • Apache Hadoop 从2.7.x 到 2.x 版本支持Java 7 and 8
  • Apache Hadoop 最新更新的2.7版本需要Java 7. 它在 OpenJDK 和Oracle (HotSpot)'s JDK/JRE下都已经通过编译和检测,早期的版本 (2.6 或更早版本) 则支持Java 6.
  • Java 11 现阶段部分支持:
    • trunk (3.3.0-SNAPSHOT) 支持 Java 11 运行时: HADOOP-15338 - Java 11 运行时支持RESOLVED
    • Hadoop在使用 Java 11编译时不支持: HADOOP-16795 - Java 11 编译时支持 OPEN

1.2 jdk8安装

未下载安装包的可以前往JDK SE下载地址,笔者这里选择的是jdk-8u271-linux-x64.tar.gz版本。

在usr目录下创建java目录:

mkdir /usr/java

jdk-8u271-linux-x64.tar.gz解压至/usr/java

tar -zxvf jdk-8u271-linux-x64.tar.gz -C /usr/java

编辑 /etc/profile,配置java环境变量:

vim /etc/profile

在末尾增加:

# java 8 environment settings
JAVA_HOME=/usr/java/jdk1.8.0_271
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH=$PATH:$JAVA_HOME/bin:$CLASSPATH

使配置生效:

source /etc/profile

验证是否配置成功:

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

2 Hadoop 安装

hadoop安装使用时有三种模式,分别是:

  1. 独立模式 : 所有节点都在同一个机器上 ( 没有人用 )
  2. 伪分布式 : NameNode 与 ResourceManager 单节点架构模型 ( 学习使用 )
  3. 完全分布式 : 高可用

详见hadoop三种模式

2.1 解压安装hadoop3.3.0

未下载hadoop压缩包的自行前往hadoop下载地址,由于是从零开始学习,不考虑现有项目的情况下,笔者选择的是hadoop3.3.0

创建hadoop目录:

mkdir /usr/hadoop

将hadoop文件解压至该目录:

tar -zxvf hadoop-3.3.0.tar.gz -C /usr/hadoop/

进入/usr/hadoop/hadoop-3.3.0目录,查看hadoop 版本:

[root@localhost ~]# ./bin/hadoop version
Hadoop 3.3.0
Source code repository https://gitbox.apache.org/repos/asf/hadoop.git -r aa96f1871bfd858f9bac59cf2a81ec470da649af
Compiled by brahma on 2020-07-06T18:44Z
Compiled with protoc 3.7.1
From source with checksum 5dc29b802d6ccd77b262ef9d04d19c4
This command was run using /usr/hadoop/hadoop-3.3.0/share/hadoop/common/hadoop-common-3.3.0.jar

/usr/hadoop目录下,创建以下几个目录:

mkdir tmp
mkdir hdfs
mkdir hdfs/data
mkdur hdfs/name

编辑/etc/profile,设置hadoop环境变量:

# java 8 environment settings
JAVA_HOME=/usr/java/jdk1.8.0_271
CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin:$CLASSPATH

# hadoop 3.3.0 environment settings
export HADOOP_HOME=/usr/hadoop/hadoop-3.3.0


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

使配置生效:

source /etc/profile

2.2 配置伪分布式集群

进入/usr/hadoop/hadoop-3.3.0/etc/hadoop目录,修改以下五个hadoop配置文件:

  • hadoop-env.sh
  • hadoop/core-site.xml
  • hadoop/hdfs-site.xml
  • mapred-site.xml
  • yarn-site.xml
2.2.1 配置hadoop-env.sh

在注释的JAVA_HOME下面新增一行之前java的路径

#  JAVA_HOME=/usr/java/testing hdfs dfs -ls
export JAVA_HOME=/usr/java/jdk1.8.0_271
2.2.2 配置core-site.xml

<configuration></configuration>中间添加以下代码:

<configuration>
 <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
  ####注释  : HDFS的URI,文件系统://namenode标识:端口号
</property>

<property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/hadoop/tmp</value>
    ###注释: namenode上本地的hadoop临时文件夹
</property>
</configuration>

第一个property是配置默认采用的文件系统,由于存储层和运算层松耦合,要为它们指定使用hadoop原生的分布式文件系统hdfs。

第二个property是配置hadoop的公共目录,指定hadoop进程运行中产生的数据存放的工作目录,NameNode、DataNode等就在本地工作目录下建子目录存放数据。但事实上在生产系统里,NameNode、DataNode等进程都应单独配置目录,而且配置的应该是磁盘挂载点,以方便挂载更多的磁盘扩展容量(LVM磁盘挂载和扩容)。

2.2.3 配置hdfs-site.xml

dfs.replication 配置的是 HDFS存储时的备份数据(datanode的备份,hdfs的副本数)(客户端将文件存到hdfs的时候,会存放在多个副本。value一般指定3,但因为搭建的是伪分布式就只有一台机器,所以只能写1)

<property>
<name>dfs.replication</name>
<value>1</value>
</property>
2.2.4 配置mapred-site.xml

指定MapReduce程序应该放在哪个资源调度集群上运行。若不指定为yarn,那么MapReduce程序就只会在本地运行而非在整个集群中运行。

<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
2.2.5 配置yarn-site.xml:

指定yarn集群中的老大(就是本机)

<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>

配置yarn集群中的重节点,指定map产生的中间结果传递给reduce采用的机制是shuffle

<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
2.2.6 配置tart-dfs.sh和stop-dfs.sh文件

添加以下参数在开头位置:

#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
2.2.7 配置start-yarn.sh和stop-yarn.sh文件

添加以下参数在开头位置:

#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HDFS_DATANODE_SECURE_USER=yarn
YARN_NODEMANAGER_USER=root

2.3 设置SSH免密登陆

此步骤是必须的,否则下面的启动步骤会出现 Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 的错误。

  • 生成公钥/私钥:

    ssh-keygen -t rsa
    

    一直回车就行。

  • 创建authorized_keys文件并修改权限为600:

    cd /root/.ssh
    touch authorized_keys
    chmod 600 authorized_keys
    
  • 将公钥追加到authorized_keys文件中去:

    cat id_rsa.pub >> authorized_keys
    
  • 测试是否能成功免密登录:

     ssh localhost
    

    因为是伪分布式集群,其实就是自己登录自己,这里的localhost也就是在[前章节2.2.2](#2.2.2 配置core-site.xml)中配置的<value>hdfs://localhost:9000</value>

2.4 启动hadoop

  1. 初始化

    hdfs namenode -format
    
  2. 启动

    start-dfs.sh
    
    start-yarn.sh
    
  3. 查看已启动的进程

    jps
    

    若包含NameNode等六个进程,则启动成功。

  4. 通过以下指令查看hadoop 指令

    hdfs dfs —help
    

    可参考Hadoop启动和停止说明

3 配置远程web ui 管理HDFS和YARN

3.1 HDFS web ui配置

  • 进入/usr/hadoop/hadoop-3.3.0/etc/hadoop

    vim hdfs-site.xml
    

    configuration内添加以下配置:

    <property>
    <name>dfs.namenode.http-address</name>
    <value>0.0.0.0:50070</value>
    </property>
    

3.2 YARN web ui配置

  • 进入/usr/hadoop/hadoop-3.3.0/etc/hadoop

    vim yarn-site.xml
    

    configuration内添加以下配置:

    <property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>0.0.0.0:8088</value>
    </property>
    

关于yarn-site.xml的其他配置参数,详见yarn-site.xml配置参数

3.3 重启Hadoop

stop-all.sh
start-all.sh

3.4 使用客户端测试访问并管理

  • hdfs web ui :你的外网IP:50070
  • yarn web ui : 你的外网IP:8088
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值