腾讯云Hadoop安装及集群环境搭建完全分布式

目录

前言

1.环境配置

1.1 jdk安装

1.2 防火墙关闭

1.3 修改hosts文件

1.4 创建hadoop用户(跳过)

2.建立机器间互信

2.1描述

2.2 生成公钥

2.3 传输认证文件

3.安装hadoop以及hadoop配置

3.1 hadoop下载(3.1.3)

3.2 配置hadoop

4.大功告成

4.1启动hadoop

4.2然后即可在web网页查看到自己的页面!!!


前言

腾讯云服务器系统 CentOs

三台服务器分别名称代号为:master slave1 slave2

1.环境配置

1.1 jdk安装

Tips:机器已为Linux系统

在master机器节点(自行决定哪台机器作为master节点)进行操作:

    切换到root模式下,避免权限问题。(执行代码:su root ,然后输入密码即可)(如果已经是root用户模式下则忽略此条操作)
    下载jdk文件
    此处推荐华为镜像站的jdk(1.8.0)文件网址
    优点:下载速度贼快,非常丝滑

wget https://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz

    新建java文件夹用于jdk解压
    下载完之后,在usr文件夹下创建一个java文件夹

mkdir /usr/java

解压jdk文件至刚刚创建的文件夹   

tar -zxvf +jdk的名字(可从下载操作处查看到) -C +解压路径(本文为/usr/java)

下述代码为本文运行代码(如果你完全按照本文操作可直接运行该代码)

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

配置java环境变量

  • 打开配置文件
vim /etc/profile
  • 修改配置文件(随便找个位置加入以下内容)

注:Linux下文件内容修改:键入i之后即可编辑文件内容,编辑完成之后按esc,输入符号:加入末行模式,然后输入wq保存退出

export JAVA_HOME=/usr/java/jdk1.8.0_151
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  • 使环境变量生效
source /etc/profile
  • 结果测试
java -version

如果能够返回java版本号则jdk安装成功(如下图)

java版本号返回


1.2 防火墙关闭

    运行如下代码

sudo systemctl stop firewalld.service

sudo systemctl disable firewalld.service

1.3 修改hosts文件

在前言中末尾提到过笔者的集群为三台机器,所以笔者的hosts文件中ip映射有三行自己添加的代码,大家可以根据自己实际情况适当修改,但是此处ip映射关系一定不能出错!!

    对于master结点,需要在文件末尾添加的内容为:
    master结点的内网ip master
    另一个机器1的公网ip slave1
    另一个机器2的公网ip slave2

    对于slave1结点,需要在文件末尾添加的内容为:
    master结点的公网ip master
    slave1结点的内网ip slave1
    另一个机器2的公网ip slave2

    对于slave2结点,需要在文件末尾添加的内容为:
    master结点的公网ip master
    slave1结点的公网ip slave1
    slave2结点的内网ip slave2

总而言之,对于自己机器上的ip映射就填自己的内网ip,自己机器上对其他ip的映射就是他们的公网ip

1.4 创建hadoop用户(跳过)

由于非root用户可能涉及权限问题,于是本文直接使用root用户进行后续操作

2.建立机器间互信

2.1描述

由于hadoop必须机器之间免密登录,所以我们必须采取ssh密钥认证方式去保证机器登录。

    机器a向机器b建立免密登录的流程
    1.机器a生成公钥
    2.机器a将认证文件传给机器b
    3.机器a成功单向建立与机器b的免密登录(即a可以免密登录b但b不能免密登录a,只需要在b上执行上述机器a的所有操作即可完成b到a的免密登录)

2.2 生成公钥

ssh-keygen

遇到提示直接全回车就行,成功后会出现一个奇形怪状内容的矩形框,标头为RSA
成功之后会在 ~/.ssh文件夹下面看到id_rsa id_rsa.pub文件(为root用户登录情况下,可能会有authorized_keys文件,问题不大)

跳转至~/.ssh文件夹下

cd ~/.ssh

查看文件内容

ls

2.3 传输认证文件

传递至localhost(Tips:copy的时候注意确认的时候一定要输入yes,而不是一路回车)

ssh-copy-id localhost

检查是否成功

ssh localhost

第一次登录时需要输入一次本机root用户登录密码,输入进去即可,然后再次键入代码:

ssh localhost

如果不需要输入密码即出现了日期信息,则传递至localhost成功

传递至slave1

传递时需要输入一次 slave1结点上的 root用户的登录密码(Tips:copy的时候注意确认的时候一定要输入yes,而不是一路回车)

ssh-copy-id slave1

检查是否成功

ssh slave1

如果不需要输入密码即出现了日期信息,则传递至slave1成功

同样,传递至slave2

3.安装hadoop以及hadoop配置


3.1 hadoop下载(3.1.3)

跳转至根目录

cd

hadoop文件下载

此处推荐使用清华镜像的下载链接(纵享丝滑+1了):

wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz

新建hadoop文件夹用于解压
下载完之后,在usr文件夹下创建一个hadoop文件夹

mkdir /usr/hadoop

解压hadoop文件至刚刚创建的文件夹

tar -zxvf +下载文件的名字(可从下载操作处查看到) -C +解压路径(本文为/usr/hadoop)

下述代码为本文运行代码(如果你完全按照本文操作可直接运行该代码)

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

配置环境变量

vim /etc/profile

将之前配置jdk时候的内容替换为:

export JAVA_HOME=/usr/java/jdk1.8.0_151
export HADOOP_HOME=/usr/hadoop/hadoop-3.1.3
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_LOG_DIR=/usr/hadoop/hadoop-3.1.3/logs
export YARN_LOG_DIR=$HADOOP_LOG_DIR
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

使环境变量生效

source /etc/profile

测试

hadoop version

如果出现如下版本号信息则安装成功
hadoop版本号

3.2 配置hadoop

创建文件夹

mkdir /usr/hadoop/hadoop-3.1.3/tmp

mkdir /usr/hadoop/hadoop-3.1.3/hdfs

mkdir /usr/hadoop/hadoop-3.1.3/hdfs/name

mkdir /usr/hadoop/hadoop-3.1.3/hdfs/data

跳转至目录 /usr/hadoop/hadoop-3.1.3/etc/hadoop/

cd /usr/hadoop/hadoop-3.1.3/etc/hadoop/

修改core-site.xml(在文件末尾的 之间添加如下代码)

<!--配置hdfs文件系统的命名空间--> 
  <property> 
    <name>fs.defaultFS</name> 
    <value>hdfs://hadoop.master:9000</value> <!--master处为主机名,9000为端口号-->
  </property> 
 
<!-- 配置操作hdfs的存冲大小 --> 
  <property> 
    <name>io.file.buffer.size</name> 
    <value>4096</value> 
  </property> 
<!-- 配置临时数据存储目录 --> 
  <property> 
    <name>hadoop.tmp.dir</name> 
    <value>file:/usr/hadoop/hadoop-3.3.4/tmp</value>
  </property>
  <property> 
<name>hadoop.http.staticuser.user</name>
<!-- 指定静态角色,HDFS上传文件的时候需要 -->
<value>root</value>
</property>
<!--web console cors settings允许WebHDFS跨域操作-->
<property>
    <name>hadoop.http.filter.initializers</name>
    <value>org.apache.hadoop.security.HttpCrossOriginFilterInitializer</value>
</property>
<property>
    <name>hadoop.http.cross-origin.enabled</name>
    <value>true</value>
</property>
<property>
    <name>hadoop.http.cross-origin.allowed-origins</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.http.cross-origin.allowed-methods</name>
    <value>GET,POST,HEAD</value>
</property>
<property>
    <name>hadoop.http.cross-origin.allowed-headers</name>
    <value>X-Requested-With,Content-Type,Accept,Origin</value>
</property>
<property>
    <name>hadoop.http.cross-origin.max-age</name>
    <value>1800</value>
</property>

    修改hdfs-site.xml

<!--配置副本数-->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
<!--hdfs的元数据存储位置-->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/hadoop/hadoop-3.1.3/hdfs/name</value>
    </property>
<!--hdfs的数据存储位置-->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/hadoop/hadoop-3.1.3/hdfs/data</value>
    </property>
<!--hdfs的namenode的web ui 地址-->
    <property>
        <name>dfs.http.address</name>
        <value>master:50070</value>
    </property>
<!--hdfs的snn的web ui 地址-->
    <property>
        <name>dfs.secondary.http.address</name>
        <value>0.0.0.0:50090</value>
    </property>
<!--是否开启web操作hdfs-->
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
<!--是否启用hdfs权限(acl)-->
    <property>
        <name>dfs.permissions</name>
        <value>false</value> 
    </property>

    修改mapred-site.xml

<!--指定mapreduce运行框架-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value> </property>
<!--历史服务的通信地址-->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>master:10020</value>
    </property>
<!--历史服务的web ui地址-->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>master:19888</value>
    </property>

    修改yarn-site.xml

<!--指定resourcemanager所启动的服务器主机名-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
<!--指定mapreduce的shuffle-->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
<!--指定resourcemanager的内部通讯地址-->
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>master:8032</value>
    </property>
<!--指定scheduler的内部通讯地址-->
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master:8030</value>
    </property>
<!--指定resource-tracker的内部通讯地址-->
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>master:8031</value>
    </property>
<!--指定resourcemanager.admin的内部通讯地址-->
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>master:8033</value>
    </property>
<!--指定resourcemanager.webapp的ui监控地址-->
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>master:8088</value>
    </property>

修改workers(hadoop3之前文件名为slaves)

直接将文件内容替换为

master
slave1
slave2

配置hadoop-env.sh、yarn-env.sh、mapred-env.sh
加入自己的jdk路径,即/usr/java/jdk1.8.0_151(随便在文件找个空行加入以下内容)

export JAVA_HOME=/usr/java/jdk1.8.0_151

配置文件拷贝
发送指令: scp+ -r +待发送文件夹+ 用户名@主机名:另一台机器的文件接收路径

scp -r /usr/hadoop root@slave1:/usr

4.大功告成

4.1启动hadoop

跳转目录

cd /usr/hadoop/hadoop-3.1.3/sbin

格式化namenode

hdfs namenode -format

如果出现了SHUTDOWN_MSG: Shutting down NameNode at xxx信息也不要慌张,向上寻找信息,如果能找到 INFO common.Storage:Storage directory ******省略 has been successfully formatted信息,则格式化成功了,忽略后面的SHUTDOWN_MSG即可

启动所有服务

start-all.sh

若出现很多ERROR的情况则进行下列操作

跳转目录

cd /usr/hadoop/hadoop-3.1.3/sbin

修改start-dfs.sh和stop-dfs.sh文件,添加如下内容:

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

修改start-yarn.sh和stop-yarn.sh文件,添加如下内容:

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

重新执行代码

start-all.sh

成功后输入jps指令查看情况

jps

应该能看到六行信息包括如下内容:
NodeManager ResourceManager NameNode Jps DataNode SecondaryNameNode
 

4.2然后即可在web网页查看到自己的页面!!!

http://master服务器的公网ip:50070/

如果在公网通过WebHDFS上传文件,需要修改登录电脑的hosts文件,将所有主机的公网ip和主机名称解析,否则会出现跨域错误

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值