云网牛站
所在位置:首页 > Linux云服务器 > 在CentOS 7/Ubuntu 18.04中安装Apache Hadoop的方法

在CentOS 7/Ubuntu 18.04中安装Apache Hadoop的方法

2019-04-07 21:46:40作者:戴进稿源:云网牛站

本文介绍在CentOS 7/Ubuntu 18.04中操作系统安装Apache Hadoop的方法。

 

一、更新系统

1、针对CentOS 7:

我建议你安装在安全专用网络中的服务器上,并禁用SELinux和Firewalld:

sudo systemctl disable --now firewalld

sudo setenforce 0

sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

cat /etc/selinux/config | grep SELINUX= | grep -v '#'

在开始部署Hadoop之前更新CentOS 7系统:

sudo yum -y install epel-release

sudo yum -y install vim wget curl bash-completion

sudo yum -y update

sudo reboot

2、针对Ubuntu 18.04:

运行以下命令更新Ubuntu 18.04系统:

sudo apt update

sudo apt -y upgrade

sudo reboot

 

二、安装Java

1、如果CentOS 7服务器上缺少Java,请安装:

sudo yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel

验证Java已否成功安装:

$ java -version

java version "1.8.0_201"

设置JAVA_HOME变量:

cat <<EOF | sudo tee /etc/profile.d/hadoop_java.sh

export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac)))))

export PATH=\$PATH:\$JAVA_HOME/bin

EOF

更新$PATH和设置:

source /etc/profile.d/hadoop_java.sh

然后测试:

$ echo $JAVA_HOME

/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64

2、在Ubuntu 18.04下安装Java:

sudo add-apt-repository ppa:webupd8team/java

sudo apt update

sudo apt -y install oracle-java8-installer oracle-java8-set-default

参考:使用PPA在Ubuntu、Linux Mint或Debian系统中安装java 11

验证版本:

$ java -version

java version "1.8.0_201"

设置JAVA_HOME变量、更新$PATH和设置、测试方法请参考以上的CentOS 7操作步骤。

 

三、为Hadoop创建用户帐户

让我们为Hadoop创建一个单独的用户,这样我们就可以在Hadoop文件系统和Unix文件系统之间进行隔离。

1、针对CentOS 7:

sudo adduser hadoop

passwd hadoop

sudo usermod -aG wheel hadoop

2、针对Ubuntu 18.04:

sudo adduser hadoop

sudo usermod -aG sudo hadoop

添加用户后,为用户生成SS密钥对:

$ sudo su - hadoop

$ ssh-keygen -t rsa

在CentOS 7/Ubuntu 18.04中安装Apache Hadoop的方法

将此用户的密钥添加到授权的ssh密钥列表中:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

chmod 0600 ~/.ssh/authorized_keys

验证你是否可以使用添加的密钥进行ssh:

hadoop@hbase:~$ ssh localhost

The authenticity of host 'localhost (::1)' can't be established.

ECDSA key fingerprint is SHA256:WTqP642Xijk3xtTb/zt32o0Q7PqYlxzwX+H/B72z4P4.

ECDSA key fingerprint is MD5:47:dc:17:78:63:f7:bc:12:72:70:4b:e3:2f:8a:c3:8d.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.

Last login: Sun Apr  7 12:47:16 2019

hadoop@hbase:~$ exit

logout

Connection to localhost closed.

 

四、下载并安装Hadoop

当前要安装的版本是3.1.2:

wget https://www-eu.apache.org/dist/hadoop/common/hadoop-3.1.2/hadoop-3.1.2.tar.gz

注:Apache Hadoop下载地址。

提取文件:

tar -xzvf hadoop-3.1.2.tar.gz

将生成的目录移动到/usr/local/hadoop:

rm hadoop-3.1.2.tar.gz

sudo mv hadoop-3.1.2/ /usr/local/hadoop

设置HADOOP_HOME并将带有Hadoop二进制文件的目录添加到$PATH:

cat <<EOF | sudo tee /etc/profile.d/hadoop_java.sh

export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac)))))

export HADOOP_HOME=/usr/local/hadoop

export HADOOP_HDFS_HOME=\$HADOOP_HOME

export HADOOP_MAPRED_HOME=\$HADOOP_HOME

export YARN_HOME=\$HADOOP_HOME

export HADOOP_COMMON_HOME=\$HADOOP_HOME

export HADOOP_COMMON_LIB_NATIVE_DIR=\$HADOOP_HOME/lib/native

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

EOF

源文件:

source /etc/profile.d/hadoop_java.sh

确认Hadoop版本:

$ hadoop version

Hadoop 3.1.2

Source code repository https://github.com/apache/hadoop.git -r 1019dde65bcf12e05ef48ac71e84550d589e5d9a

Compiled by sunilg on 2019-01-29T01:39Z

Compiled with protoc 2.5.0

From source with checksum 64b8bdd4ca6e77cce75a93eb09ab2a9

This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-3.1.2.jar

 

五、配置Hadoop

所有Hadoop配置都位于/usr/local/hadoop/etc/hadoop/目录下:

在CentOS 7/Ubuntu 18.04中安装Apache Hadoop的方法

需要修改许多配置文件以在CentOS 7/Ubuntu 18.04上完成Hadoop安装。

首先在shell脚本hadoop-env.sh中编辑JAVA_HOME:

$ sudo vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh

# Set JAVA_HOME - Line 54

export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac)))))

注:上面的配置针对CentOS 7,如果是Ubuntu 18.04则把export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac)))))改成export JAVA_HOME=/usr/lib/jvm/java-8-oracle。

然后进行相关的配置。

1、core-site.xml

core-site.xml文件包含启动时使用的Hadoop集群信息,这些属性包括:用于Hadoop实例的端口号、为文件系统分配的内存、数据存储的内存限制、读/写缓冲区的大小。

打开core-site.xml:

sudo vim /usr/local/hadoop/etc/hadoop/core-site.xml

在<configuration>和</configuration>标记之间添加以下属性:

<configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://localhost:9000</value>

<description>The default file system URI</description>

</property>

</configuration>

在CentOS 7/Ubuntu 18.04中安装Apache Hadoop的方法

2、hdfs-site.xml

需要为要在群集中使用的每个主机配置此文件,该文件包含:本地文件系统上的namenode和datanode路径、复制数据的值。

在此设置中,我想将Hadoop基础结构存储在辅助磁盘 - /dev/sdb中:

$ lsblk

在CentOS 7/Ubuntu 18.04中安装Apache Hadoop的方法

我将这个磁盘分区并挂载到/ hadoop目录:

sudo parted -s -- /dev/sdb mklabel gpt

sudo parted -s -a optimal -- /dev/sdb mkpart primary 0% 100%

sudo parted -s -- /dev/sdb align-check optimal 1

sudo mkfs.xfs /dev/sdb1

sudo mkdir /hadoop

echo "/dev/sdb1 /hadoop xfs defaults 0 0" | sudo tee -a /etc/fstab

sudo mount -a

确认:

$ df -hT | grep /dev/sdb1

/dev/sdb1 xfs 50G 33M 50G 1% /hadoop

为namenode和datanode创建目录:

sudo mkdir -p /hadoop/hdfs/{namenode,datanode}

将所有权设置为hadoop用户和组:

sudo chown -R hadoop:hadoop /hadoop

现在打开文件:

sudo vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml

然后在<configuration>和</configuration>标记之间添加以下属性:

<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

<property>

<name>dfs.name.dir</name>

<value>file:///hadoop/hdfs/namenode</value>

</property>

<property>

<name>dfs.data.dir</name>

<value>file:///hadoop/hdfs/datanode</value>

</property>

</configuration>

在CentOS 7/Ubuntu 18.04中安装Apache Hadoop的方法

3、mapred-site.xml

这是设置要使用MapReduce框架的地方:

sudo vim /usr/local/hadoop/etc/hadoop/mapred-site.xml

设置如下:

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

4、yarn-site.xml

此文件中的设置将覆盖Hadoop yarn的配置,它定义了资源管理和作业调度逻辑:

sudo vim /usr/local/hadoop/etc/hadoop/yarn-site.xml

增加:

<configuration>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

</configuration>

在CentOS 7/Ubuntu 18.04中安装Apache Hadoop的方法

 

六、验证Hadoop配置

初始化Hadoop Infrastructure存储:

sudo su -  hadoop

hdfs namenode -format

见下面的输出:

在CentOS 7/Ubuntu 18.04中安装Apache Hadoop的方法

测试HDFS配置:

$ start-dfs.sh

Starting namenodes on [localhost]

Starting datanodes

Starting secondary namenodes [hbase]

hbase: Warning: Permanently added 'hbase' (ECDSA) to the list of known hosts.

最后验证YARN配置:

$ start-yarn.sh

Starting resourcemanager

Starting nodemanagers

Hadoop 3.x defult Web UI端口:

NameNode - 默认HTTP端口为9870。

ResourceManager - 默认HTTP端口为8088。

MapReduce JobHistory Server - 默认HTTP端口是19888。

可以使用以下方法检查hadoop使用的端口:

$ ss -tunelp | grep java

访问地址http://ServerIP:9870上的Hadoop Web Dashboard:

在CentOS 7/Ubuntu 18.04中安装Apache Hadoop的方法

在CentOS 7/Ubuntu 18.04中安装Apache Hadoop的方法

在http://ServerIP:8088上检查Hadoop集群页面:

在CentOS 7/Ubuntu 18.04中安装Apache Hadoop的方法

测试以查看是否可以创建目录:

$ hadoop fs -mkdir /test

$ hadoop fs -ls /

Found 1 items

drwxr-xr-x   - hadoop supergroup 0 2019-04-07 10:23 /test

停止Hadoop服务的方法,使用命令:

$ stop-dfs.sh

$ stop-yarn.sh

至此,Hadoop配置完成。

注:如果需要在CentOS 7下安装HBase请参考在Ubuntu 18.04操作系统中安装HBase的方法

 

相关主题

Ubuntu18.04系统中编译hadoop2.7.6支持snappy

精选文章
热门文章