【Hadoop】 Hadoop集群搭建

Hadoop集群搭建

将下载好的hadoop压缩包上传到主节点服务器

$ tar -zxvf hadoop-3.3.1.tar.gz -C /usr/local	# 解压到/usr/local中
$ cd mv ./hadoop-3.3.1/ ./hadoop	# 将文件名改为hadoop
$ sudo chown -R humpy ./hadoop	# 修改权限,当前是什么用户登录,就给他赋予用户的权限

STEP1 Java环境准备

由于Hadoop的安装是需要使用到Java环境的,因此在服务器上需要配置JDK,并记录好Java的安装位置,这个路径在后面的安装过程中会频繁出现。

由于Centos自带了JDK.1.7和JDK1.8,因此需要先将其删除,重新安装JDK并配置环境变量;

$ rpm -qa|grep java #查询系统是否装有JDK
$ rpm -e --nodeps 文件名 # 删除对应的文件
$ yum install -y java-1.8.0-openjdk* # 下载openjdk并安装

安装完成后,需要先定位到Java的安装路径,命令如下

$ which java
$ ls -lr /usr/bin/java
$ ls -lr /etc/alternatives/java

在这里插入图片描述

最后输出的 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64 就是需要配置到文件里的JAVA_HOME的值

在这里插入图片描述

$ source /etc/profile # 使配置文件生效
$ echo $JAVA_HOME # 查看Java地址

在进入下一步之前一定要检查自己的Java环境是否配置成功且生效, 否则安装启动Hadoop会有一系列的问题

以上操作需要做三台机器中都执行一次;

STEP2 网络映射配置

尽管前一次实验中已经配置成功了集群网络,但是在这里还需要将主机名和IP地址映射配置上,以便Hadoop直接通过主机名去找对应主机的地址;

三台机子中同时执行以下操作

$ vim /etc/hosts

在这里插入图片描述

我这里已经配置成功了;

STEP3 集群搭建

1. 免密登录

(1)主节点需要免密登录子节点,如果主节点上之前有过公钥,需要先将其删除

$ cd ~/.ssh
$ rm ./id_rsa*	# 删除旧的公钥
$ ssh-keygen -t rsa	# 三次回车

(2)生成密钥之后,首先需要主节点能免密登录本机

$ cat ./id_rsa.pub >> ./authorized_keys
$ ssh master01 # 测试联通性

(3)然后将公钥传到子节点上

$ scp ~/.ssh/id_rsa.pub slave01:/home/humpy
$ scp ~/.ssh/id_rsa.pub slave02:/home/humpy

(4) 在2个子节点上授权接受到的公钥

$ mkdir ~/.ssh # 如果不存在就先创建它
$ cat /home/humpy/id_rsa.pub >> ~/.ssh/authorized_keys
$ rm /home/humpy/id_rsa.pub # 移出公钥
$ ssh master01 # 测试联通性

在这里插入图片描述

2. 配置Hadoop集群环境

需要修改/usr/local/hadoop/etc/hadoop下的workers、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml5个文件

(1)修改workers文件
$ vim workers

在其中添加两个子节点

localhost
slave01
slave02
(2)修改core-site.xml文件
$ vim core-site.xml

<configuration>标签内添加

<configuration>
         <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master01:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/local/hadoop/tmp</value>
        </property>
</configuration>

fs.defaultFS:指定namenode的hdfs协议的文件系统通信地址,可以指定一个主机+端口
hadoop.tmp.dir:hadoop集群在工作时存储的一些临时文件存放的目录

(3)修改hdfs-site.xml文件
$ vim hdfs-site.xml

dfs.secondary.http.address:secondarynamenode运行节点的信息
dfs.repliction:hdfs的副本数设置,默认为3
dfs.namenode.name.dir:namenode数据的存放位置,元数据存放位置
dfs.datanode.data.dir:datanode数据的存放位置,block块存放的位置

<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>slave01:50090</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>3</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/data</value>
        </property>
</configuration>
(4)修改mapred-site.xml文件
$ vim mapred-site.xml

mapreduce.framework.name:指定mapreduce框架为yarn方式
mapreduce.jobhistory.address:指定历史服务器的地址和端口
mapreduce.jobhistory.webapp.address:查看历史服务器已经运行完的Mapreduce作业记录的web地址

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>master01:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>master01:19888</value>
        </property>
        <property>
                <name>yarn.app.mapreduce.am.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property>
        <property>
                <name>mapreduce.map.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property>
        <property>
                <name>mapreduce.reduce.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property>
</configuration>

(5)修改yarn-site.xml文件
$ vim yarn-site.xml

在其中添加两个子节点

<configuration>
<!-- Site specific YARN configuration properties -->
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>master01</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>
(6) 将配置好的Hadoop传给子节点
$ tar -zcf ~/hadoop.master.tar.gz hadoop
$ scp hadoop.master.tar.gz slave01:/home/
$ scp hadoop.master.tar.gz slave02:/home/

在子节点中授权并解压文件

$ sudo rm -r /usr/local/hadoop    
$ sudo tar -zxf /home/hadoop.master.tar.gz -C /usr/local
$ sudo chown -R humpy /usr/local/hadoop
(7) 初始化

HDFS启动

$ cd /usr/local/hadoop
$ ./bin/hdfs namenode -format

在这里插入图片描述

启动成功shell

(8)集群启动
$ ./sbin/start-dfs.sh
$ ./sbin/start-yarn.sh
$ ./sbin/mr-jobhistory-daemon.sh start historyserver

若出现如下报错,ERROR: Attempting to operate on hdfs namenode as root,是因为缺少用户定义造成的

在这里插入图片描述

需要分别编辑开始和关闭脚本

$ vim sbin/start-dfs.sh
$ vim sbin/stop-dfs.sh

在空白处添加如下内容

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

再次执行若还是不能启动,则需要修改hadoop目录下的etc/hadoop/hadoop-env.sh文件添加jdk的环境变量
在这里插入图片描述

如果再次运行还是启动不了,则需要修改start-yarn.sh stop-yarn.sh文件

$ vim sbin/start-yarn.sh 
$ vim sbin/stop-yarn.sh 

在顶部添加如下内容

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

最后启动后是这样的

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值