天天看点

hadoop官方文档_腾讯云Hadoop集群搭建。

0基础入门大数据第一步,Hadoop集群搭建,参考尚硅谷大数据开发课程。最近腾讯云十周年活动,1核2G轻量应用服务器99/年,买了三台准备搭集群。

hadoop官方文档_腾讯云Hadoop集群搭建。

购买服务器

腾讯云官网->限时秒杀->选好1核2G服务器(有钱也可以选个4核8G的)->微信扫码登陆->实名认证->选地区(我默认是选的南京1,一定要选一个地区!!!一定要选一个地区!!!一定要选一个地区!!!)->CentOS7镜像->新建私有网络(默认配置就行)->确认之后进控制台就可以看到自己买的服务器了,改个密码登陆吧。

hadoop官方文档_腾讯云Hadoop集群搭建。

因为1核2G服务器只针对新用户,这里需要另外两个微信扫码登陆,实名的话一个人可以实名三个账号。

配置云联网

因为三台服务器是跨账号的,所以默认是不支持内网IP互联,只能通过1M带宽互相访问。

有两种方案解决,对等连接和云联网,这里我购买的南京机房不支持对等连接,只能使用云联网。就相当于把3台服务器配置在同一个虚拟局域网内。同地域云联网免费哦。

云联网的配置参考腾讯官方文档

这里有个坑,按照官方文档配置好后会因为IP冲突路由表失效。

hadoop官方文档_腾讯云Hadoop集群搭建。

我们登陆另外两个账号,新建私有网络,配置两个不同的CIDR。然后再关联账号1的云联网,这样就OK了。

hadoop官方文档_腾讯云Hadoop集群搭建。

连接服务器

我用的是SecureCRT登陆,绿色版免安装开箱即用。

关闭防火墙 (3台)

systemctl 
           

配置主机映射(3台)

vim /etc/hosts 
           
hadoop官方文档_腾讯云Hadoop集群搭建。

三台都设置为腾讯云内网IP,如果服务器没有配置云联网则当前配置主机填内网IP,另外两台填公网IP。

三个节点都需要配置!!!三个节点都需要配置!!!三个节点都需要配置!!!

试试能不能ping通。

hadoop官方文档_腾讯云Hadoop集群搭建。

创建文件夹(1台)

在/opt目录下创建module和software文件夹,software存储安装包,module存储运行文件。

mkdir module
mkdir software
           

安装JDK和Hadoop(1台)

在/opt/software目录下用wget下载jdk 1.8安装包

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"
wget http://archive.apache.org/dist/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz
           

解压到/opt/module目录

tar -zxvf jdk-8u141-linux-x64.tar.gz -C /opt/module/
tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/
           

配置环境变量

vim /etc/profile
           

在文件末尾添加

##JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_141
export PATH=$JAVA_HOME/bin:$PATH

##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
           
hadoop官方文档_腾讯云Hadoop集群搭建。

保存退出刷新

source /etc/profile
           

配置完输入java -version和hadoop查看是否安装成功。

Hadoop集群配置(1台)

集群节点规划

hadoop1节点作为Namenode、Datanode、Nodemanager

hadoop2节点作为Datanode、ResourceManager、Nodemanager

hadoop3节点作为SecondaryNameNode、Datanode、Nodemanager

先cd到hadoop的etc文件夹

cd /opt/module/hadoop-2.7.2/etc/hadoop
           

配置Hadoop的Java环境

分别打开hadoop-env.sh mapred-env.sh yarn-env.sh添加

export JAVA_HOME=/opt/module/jdk1.8.0_141
vim hadoop-env.sh
vim mapred-env.sh
vim yarn-env.sh
           

核心配置文件core-site.xml

vim core-site.xml
           

插入

<!-- 指定HDFS中NameNode的地址 -->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop1:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
           

HDFS配置hdfs-site.xml

vim hdfs-site.xml
           

插入

<!-- 指定HDFS副本的数量 -->
<property>
        <name>dfs.replication</name>
        <value>3</value>
</property>

<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>hadoop3:50090</value>
</property>
           

YARN配置yarn-site.xml

vim yarn-site.xml
           

插入

<!-- Reducer获取数据的方式 -->
<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop2</value>
</property>
<property>
        <name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
</property>
           

MapReduce配置mapred-site.xml

vim mapred-site.xml
           

插入

<!-- 指定MR运行在YARN上 -->
<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop1:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop1:19888</value>
</property>
           

配置slaves

hadoop1
hadoop2
hadoop3
           

配置SSH免密登录(2台)

hadoop1、hadoop2节点分别输入

ssh-keygen -t rsa
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3
           

文件分发(1台)

分发脚本编写

vim /usr/local/bin/xsync
           

插入保存

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for((host=1; host<4; host++)); do
        echo ------------------- hadoop$host --------------
        rsync -rvl $pdir/$fname [email protected]$host:$pdir
done
           

修改脚本 xsync 具有执行权限

chmod 777 /usr/local/bin/xsync
           

然后将hadoop1节点的配置和环境配置分发到另外两个节点

xsync /opt/module
xsync /etc/profile
           

在另外两个节点刷新环境配置

source /etc/profile
           

启动集群

在hadoop1上启动HDFS

/opt/module/hadoop-2.7.2/sbin/start-dfs.sh
           

在hadoop2上启动YARN

/opt/module/hadoop-2.7.2/sbin/start-yarn.sh
           

然后在三个节点的终端输入jps查看是否启动成功。

继续阅读