• 欢迎关注微信公众号:九万里大数据
  • 请使用Ctrl+D收藏本站到书签栏
  • 手机也可访问本站 jwldata.com

完全分布式Hadoop集群搭建

大数据技术 九万里大数据 2年前 (2021-04-23) 402次浏览 0个评论 扫描二维码
文章目录[隐藏]

之前我们讲过伪分布式Hadoop集群安装,但其实这种是单节点集群,并不是真正的分布式集群,只能用来学习和开发测试使用。今天我们从零开始搭建一个完全分布式Hadoop集群,包含了最关键的配置参数,可以直接用于生产环境。企业生产环境也仅仅是在我们今天讲的基础之上,加入了更多的安全性参数和性能调优参数而已。

环境准备

三台centos7.6虚拟机,配置2C4G 50G磁盘

根据实际IP和主机名,在所有机器上都配置好/etc/hosts

vi /etc/hosts
 
10.0.2.40 centos1
10.0.2.41 centos2
10.0.2.42 centos3

安装JDK

首先需要安装JDK

下载安装包

hadoop官网

目前hadoop3.2最新发布的版本是hadoop-3.2.2,清华大学的镜像下载地址:
https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.2.2/hadoop-3.2.2.tar.gz

下载后校验一下安装包的完整性,可以与官网sha512值比对。

[root@centos1 ~]# sha512sum hadoop-3.2.2.tar.gz
054753301927d31a69b80be3e754fd330312f0b1047bcfa4ab978cdce18319ed912983e6022744d8f0c8765b98c87256eb1c3017979db1341d583d2cee22d029  hadoop-3.2.2.tar.gz

配置ssh免密

在centos1主机上生成公私钥对。

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

将公私钥拷贝到centos2和centos3上。执行这一步操作,需要输入centos2和centos3上root用户登录的密码。

# 复制公钥
ssh-copy-id root@centos2
ssh-copy-id root@centos3
 
# 复制私钥
scp ~/.ssh/id_rsa root@centos2:~/.ssh
scp ~/.ssh/id_rsa root@centos3:~/.ssh

安装配置Hadoop

安装Hadoop

在centos1, centos2, centos3上执行。

tar -zxf hadoop-3.2.2.tar.gz -C /opt
chown -R root:root /opt/hadoop-3.2.2
ln -s /opt/hadoop-3.2.2 /opt/hadoop

配置环境变量

在centos1, centos2, centos3上执行。
如果能配置一下系统环境变量的话,在使用HDFS命令行时会更方便。

vi /etc/profile
 
# Hadoop
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
 
source /etc/profile

配置HDFS

在centos1上执行。只需要在一台机器上配置好,其他两台的配置可以直接scp过去。

cd /opt/hadoop
vi etc/hadoop/hadoop-env.sh
 
# 在hadoop-env.sh文件中添加以下环境变量
export JAVA_HOME=/usr/java/latest
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
vi etc/hadoop/core-site.xml
 
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://centos1:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/data/dfs/tmp</value>
    </property>
</configuration>
vi etc/hadoop/hdfs-site.xml
 
<configuration>
    <property>
        <name>dfs.namenode.http-address</name>
        <value>centos1:9870</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>centos2:9868</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/data/dfs/nn</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/data/dfs/dn</value>
    </property>
    <property>
        <name>dfs.namenode.checkpoint.dir</name>
        <value>file:/data/dfs/snn</value>
    </property>
</configuration>

配置workers文件,因为刚才已经配了ssh免密,后面就可以通过一个总控脚本很方便地启动HDFS和YARN。

vi etc/hadoop/workers
 
centos1
centos2
centos3

配置YARN

通过YARN来运行MapReduce jobs。

vi etc/hadoop/mapred-site.xml
 
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.application.classpath</name>
        <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
    </property>
</configuration>
vi etc/hadoop/yarn-site.xml
 
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</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>
    <property>
        <name>yarn.nodemanager.address</name>
        <value>0.0.0.0:8041</value>
    </property>
        <name>yarn.resourcemanager.hostname</name>
        <value>centos1</value>
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>2048</value>
    </property>
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>2048</value>
    </property>
    <property>
        <name>yarn.nodemanager.resource.cpu-vcores</name>
        <value>2</value>
    </property>
    <property>
        <name>yarn.nodemanager.local-dirs</name>
        <value>/data/yarn/nm</value>
    </property>
    <property>
        <name>yarn.nodemanager.log-dirs</name>
        <value>/data/yarn/container-logs</value>
    </property>
</configuration>

拷贝配置文件

将centos1上修改过的配置文件scp到centos2, cento3上。

scp /opt/hadoop/etc/hadoop/hadoop-env.sh root@centos2:/opt/hadoop/etc/hadoop
scp /opt/hadoop/etc/hadoop/core-site.xml root@centos2:/opt/hadoop/etc/hadoop
scp /opt/hadoop/etc/hadoop/hdfs-site.xml root@centos2:/opt/hadoop/etc/hadoop
scp /opt/hadoop/etc/hadoop/workers root@centos2:/opt/hadoop/etc/hadoop
scp /opt/hadoop/etc/hadoop/mapred-site.xml root@centos2:/opt/hadoop/etc/hadoop
scp /opt/hadoop/etc/hadoop/yarn-site.xml root@centos2:/opt/hadoop/etc/hadoop
 
scp /opt/hadoop/etc/hadoop/hadoop-env.sh root@centos3:/opt/hadoop/etc/hadoop
scp /opt/hadoop/etc/hadoop/core-site.xml root@centos3:/opt/hadoop/etc/hadoop
scp /opt/hadoop/etc/hadoop/hdfs-site.xml root@centos3:/opt/hadoop/etc/hadoop
scp /opt/hadoop/etc/hadoop/workers root@centos3:/opt/hadoop/etc/hadoop
scp /opt/hadoop/etc/hadoop/mapred-site.xml root@centos3:/opt/hadoop/etc/hadoop
scp /opt/hadoop/etc/hadoop/yarn-site.xml root@centos3:/opt/hadoop/etc/hadoop

启动Hadoop

格式化HDFS文件系统。

bin/hdfs namenode -format

完全分布式Hadoop集群搭建

启动HDFS和YARN(两种方式均可启动)
方法一:
sbin/start-all.sh
 
方法二:
sbin/start-dfs.sh
sbin/start-yarn.sh

完全分布式Hadoop集群搭建

浏览器打开 http://centos1:9870,这是HDFS NameNode的Web Console。
完全分布式Hadoop集群搭建

浏览器打开 http://centos1:8088,这是ResourceManager的Web Console。在Nodes标签页可以看到YARN集群的节点情况。
完全分布式Hadoop集群搭建

测试验证

测试借助于YARN运行MapReduce jobs的情况下。

bin/hdfs dfs -mkdir /user
bin/hdfs dfs -mkdir /user/root
bin/hdfs dfs -mkdir input
bin/hdfs dfs -put etc/hadoop/*.xml input
 
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.2.jar grep input output 'dfs[a-z.]+'
 
bin/hdfs dfs -cat output/*

在ResourceManager的Web Console里也能看到运行的YARN任务。
完全分布式Hadoop集群搭建

通过命令行查看HDFS的结果输出目录。
完全分布式Hadoop集群搭建

查询三个节点上启动的进程,可以更直观地感受Hadoop集群的节点分布情况。
完全分布式Hadoop集群搭建


欢迎关注我的公众号“九万里大数据”,原创技术文章第一时间推送。
欢迎访问原创技术博客网站 jwldata.com,排版更清晰,阅读更爽快。


完全分布式Hadoop集群搭建
 


本站文章,如未注明,均为原创 | 原创文章版权归九万里大数据所有,未经许可不得转载。
本文链接:完全分布式Hadoop集群搭建
喜欢 (7)

您必须 登录 才能发表评论!