快速搭建Hadoop生产集群(非22端口)

x33g5p2x  于2021-03-09 转载在 Hadoop  
字(4.6k)|赞(0)|评价(0)|浏览(582)

本文所用虚拟机为九台16gb 云服务器

如果您未使用云主机,则请确保虚拟机基本配置可用。

虚拟机环境准备


****首先确保

ping www.baidu.com

虚拟机网络畅通

安装epel-release

yum install -y epel-release

工具包集合,包含ifconfig等命令

yum install -y net-tools

编辑器

yum install -y vim

关闭防火墙,关闭防火墙开机自启

systemctl stop firewalld
systemctl disable firewalld.service

创建用户

useradd xxx;
/# 设置用户密码,请自行修改,后面以xxx为例

echo "123456" | passwd --stdin xxx
/# 配置sudo免密

echo 'xxx ALL=(ALL) NOPASSWD: NOPASSWD: ALL' >>/etc/sudoers

sed -i 's/Defaults requirett//#Defaults requirett/g' /etc/sudoers

配置hosts映射

vi /etc/hosts

/#add ip hostname

10.3.xxx.xxx node01

10.3.xxx.xxx node02 10.3.xxx.xxx node03 10.3.xxx.xxx node04

10.3.xxx.xxx node05

10.3.xxx.xxx node06

10.3.xxx.xxx node07

10.3.xxx.xxx node08

10.3.xxx.xxx node09

在/opt目录下创建module、software文件夹
mkdir /opt/module

mkdir /opt/software

修改module、software文件夹的所有者和所属组均为xxx用户

chown xxx:xxx /opt/module

chown xxx:xxx /opt/softwore

关于jdk,如果虚拟机最小化安装则无需卸载,否则请执行

rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps

来卸载jdk

安装jdk

将** jdk-8u212-linux-x64.tar.gz**,hadoop-3.1.3.tar.gz 上传到software


解压安装文件到/opt/module下面****

tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/

将Hadoop****添加到环境变量

pwd

/opt/module/hadoop-3.1.3

pwd

/opt/module/jdk1.8.0_212

打开/etc/profile.d/my_env.sh文件

sudo vi /etc/profile.d/my_env.sh
/#JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.8.0_212

export PATH=$PATH:$JAVA_HOME/bin

/#HADOOP_HOME

export HADOOP_HOME=/opt/module/hadoop-3.1.3

export PATH=$PATH:$HADOOP_HOME/bin

export PATH=$PATH:$HADOOP_HOME/sbin
source /etc/profile /# 让配置生效
hadoop version /# 测试Hadoop版本

java -version /# java版本

ssh免密登录

cd ~

cd .ssh/

ssh-keygen -t rsa

ssh-copy-id -p 10002 xxx@node-01

ssh-copy-id -p 10002 xxx@node-02

ssh-copy-id -p 10002 xxx@node-03

....

请在各台服务器均执行免密配置

node1上root用户同样也配置一份免密登录

配置集群分发脚本 xsync

vi /home/xxx/bin

/#!/bin/bash

/#1. 判断参数个数

if [ $/# -lt 1 ]

then

echo Not Enough Arguement!

exit;

fi

/#2. 遍历集群所有机器

for host in node-01 ... node-09

do

echo ==================== $host ====================

/#3. 遍历所有目录,挨个发送

for file in $@

do

/#4. 判断文件是否存在

if [ -e $file ]

then

/#5. 获取父目录

pdir=$(cd -P $(dirname $file); pwd)

/#6. 获取当前文件的名称

fname=$(basename $file)

ssh $host -p 10002 "mkdir -p $pdir"

rsync -av -e 'ssh -p 10002 ' $pdir/$fname $host:$pdir

else

echo $file does not exists!

fi

done

done

chmod +x xsync  赋予权限

cp xsync /usr/bin/

cd /opt/module/hadoop-3.1.3/etc/hadoop/

配置core-site.xml

<configuration>

<!-- 指定NameNode的地址 -->

<property>

<name>fs.defaultFS</name>

<value>hdfs://10.3.xxx.01:8020</value>

</property>

<!-- 指定hadoop数据的存储目录 -->

<property>

<name>hadoop.tmp.dir</name>

<value>/opt/module/hadoop-3.1.3/data</value>

</property>

<!-- 配置HDFS网页登录使用的静态用户为xxx -->

<property>

<name>hadoop.http.staticuser.user</name>

<value>xxx</value>

</property>

</configuration>

配置hdfs-site.xml

<configuration>

<!-- nn web端访问地址-->

<property>

<name>dfs.namenode.http-address</name>

        <value>10.3.xxx.01:9870</value>

</property>

<!-- 2nn web端访问地址-->

<property>

<name>dfs.namenode.secondary.http-address</name>

        <value>10.3.xxx.02:9868</value>

</property>

</configuration>

配置yarn-site.xml

<configuration>

<!-- 指定MR走shuffle -->

<property>

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

<value>mapreduce_shuffle</value>

</property>

<!-- 指定ResourceManager的地址-->

<property>

<name>yarn.resourcemanager.hostname</name>

<value>nod03</value>

</property>

<!-- 环境变量的继承 -->

<property>

<name>yarn.nodemanager.env-whitelist</name>

<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>

</property>

</configuration>

MapReduce配置文件

<configuration>

<!-- 指定MapReduce程序运行在Yarn上 -->

<property>

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

<value>yarn</value>

</property>

</configuration>

分发配置文件

xsync/opt/module/hadoop-3.1.3/etc/hadoop/

查看各台服务器分发情况

cat/opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml

vi /opt/module/hadoop-3.1.3/etc/hadoop/workers

node01

node02

node03

node04

node05

node06

node07

node08

node09

分发各节点

xsync /opt/module/hadoop-3.1.3/etc

由于在生产环境下,ssh的端口被修改成xxx,不是使用的默认端口,

但是hadoop在启动相应进程的时候,会使用的ssh默认端口22

解决:

1、命令行(临时),这种方式会导致关闭当前终端,该值失效。

export HADOOP_SSH_OPTS="-p xxx"

2、永久修改:把上述的命令添加到hadoop的hadoop-env.sh文件,添加以后就可以正常启动hadoop进程。

格式化namenode

[xxx@node01 hadoop-3.1.3]$ hdfs namenode -format

(2)启动HDFS

[xxx@node01 hadoop-3.1.3]$ sbin/start-dfs.sh

(3)在配置了ResourceManager的节点node03启动YARN

[xxx@node03 hadoop-3.1.3]$ sbin/start-yarn.sh

4)Web端查看HDFS的NameNode

(a)浏览器中输入:http://node01:9870

(b)查看HDFS上存储的数据信息

(5)Web端查看YARN的ResourceManager

(a)浏览器中输入:http://node03:8088

(b)查看YARN上运行的Job信息

相关文章

热门文章

更多