大数据环境搭建系列【一】hadoop完全分布式集群搭建



前言

hadoop3.1.4完全分布式集群环境搭建


一、centos环境

centos是目前企业用的比较多的linux操作系统,这里使用的是centos7,服务器安装的版本是CentOS Linux release 7.6.1810 (Core),网上有很多安装教程,这里就不多赘述。


二、yum 镜像地址更改

为了可以提高下载安装包的速度,建议切换到ali的源。
操作如下:

cd yum.repos.d/
rm -rf *
curl -o /etc/yum.repos.d/ali.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache

三、ntp集群时钟同步

3.1 确定系统是否安装ntp

rpm -qa | grep ntp

1) 出现以下信息则系统已经安装 ntp:

安装信息
fontpackages-filesystem-1.44-8.el7.noarch
python-ntplib-0.3.2-1.el7.noarch
ntpdate-4.2.6p5-28.el7.centos.x86_64
ntp-4.2.6p5-28.el7.centos.x86_64

2)如果安装信息不完整删除已安装 ntp:

yum –y remove ntpdate-4.2.6p5-28.el7.x86_64

3) 重新安装ntp:

yum -y install ntp

3.2 配置ntp服务

1) 修改所有节点的ntp.conf

vim /etc/ntp.conf
###内容
restrict 192.168.1.82 nomodify notrap nopeer noquery          //当前节点IP地址
restrict 192.168.6.2 mask 255.255.255.0 nomodify notrap  //集群所在网段的网关(Gateway),子网掩码(Genmask)

2)确定时间同步的主节点,修改它的ntp.conf

vim /etc/ntp.conf
#在 server 部分添加
server 127.127.1.0
Fudge 127.127.1.0 stratum 10
#并注释掉server 0~n 的配置信息

3)主节点以外其他节点配置

vim /etc/ntp.conf
#在 server 部分添加
server 192.168.1.82
Fudge 192.168.1.82 stratum 10
#并注释掉server 0~n 的配置信息

3.3 启动ntp、查看状态

1)启动ntp服务

systemctl start ntpd

2)查看 ntp 服务是否启动成功

ntpstat

ntp服务器启动完毕后,需要等待5-10分钟才能与/etc/ntp.conf中配置的标准时间进行同步。
等一段时间之后,使用ntpstat命令查看状态,就会有如下结果:
在这里插入图片描述
3)查看ntp服务器与上层ntp的状态

ntpq -p

在这里插入图片描述
remote:本机和上层ntp的ip或主机名,“+”表示优先,“*”表示次优先
refid:参考上一层ntp主机地址
st:stratum阶层
when:多少秒前曾经同步过时间
poll:下次更新在多少秒后
reach:已经向上层ntp服务器要求更新的次数
delay:网络延迟
offset:时间补偿
jitter:系统时间与bios时间差

3.4 设置开机自启

chkconfig ntpd on

四、防火墙(所有节点)

关闭防火墙:
防火墙的相关操作


五、主机名与hosts文件(所有节点)

1)修改主机名

hostnamectl set-hostname hadoop01
reboot #重启生效

2)修改hosts文件

vi /etc/hosts
#追加内容
192.168.1.82 hadoop01
192.168.1.83 hadoop02
192.168.1.84 hadoop03

六、SSH 免密登录(所有节点)

1)输入以下命令回车至返回终端得到秘钥

ssh-keygen

2)将秘钥拷贝至集群中所有机器

ssh-copy-id root@192.168.1.82
ssh-copy-id root@192.168.1.83
ssh-copy-id root@192.168.1.84

3)所有节点执行以上操作
4)测试

ssh hadoop01
ssh hadoop02
ssh hadoop03

七、jdk(所有节点)

7.1 检查系统是否自带open-jdk,如果执行以下操作,最终等得到jdk的路径,并且是open-jdk,则执行下面的操作

java -version
which java
返回路径>/xxx/xxx/java
ls -lrt /xxx/xxx/java
返回连接信息>/usr/bin/java -> /etc/alternatives/java
ls -lrt /etc/alternatives/java
返回安装路径>/etc/alternatives/java -> /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java

7.2卸载系统自带open-jdk

1) 查看

rpm -qa|grep java

2) 通过rpm -e -nodeps 卸载所有包

rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.101-3.b13.el7_2.x86_64

7.3安装jdk

  • 将事先准备好的jar包上传到centos系统上,然后解压、添加软连接,我这里将安装路径放在了/usr/lib下
cd /usr/lib/jvm
cp /xxx/xxx/jdk1.8.xxx.gz .
tar -zxvf jdk1.8.xxx.gz
ln -s /usr/lib/jvm/jdk1.8.xxx /usr/lib/jvm/jdk
  • 配置环境变量
vim /etc/profie
#文件末尾追加
export JAVA_HOME=/usr/lib/jvm/jdk
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
java -version

八、zookeeper(所有节点)

8.1 安装zookeeper

  • 将事先准备好的jar包上传到centos系统上,然后解压、添加软连接,我这里将安装路径放在了/usr/lib下
cd /usr/lib
mkdir zookeeper
cd zookeeper
cp /xxx/xxx/zookepper-3.6.4.gz .
tar -zxvf zookepper-3.6.4.gz .
ln -s /usr/lib/zookeeper/zookepper-3.6.4 /usr/lib/zookeeper/zk
  • 配置环境变量
vim /etc/profile
#文件末尾追加
export ZK_HOME=/usr/lib/zookeeper/zk
export PATH=\$PATH:\$ZK_HOME/bin

source /etc/profile
zkServer.sh 

这里可能会提示zk没有启动,但环境变量配置是成功的

8.2 配置zookeeper

cd /usr/lib/zookeeper/zk/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
#更改一下dataDir配置
dataDir=/var/zookeeper
#在文件末尾追加,有几台机器就将他们从0~n进行编号,如下(我这里是三台服务器):
server.0 = hadoop01:2888:3888
server.1 = hadoop02:2888:3888
server.2 = hadoop03:2888:3888

cd /var
mkdir zookeeper
cd zookeeper
echo x > myid

x 指的是当前服务器的编号0,1,2 …

8.3 启动zookeeper

zkServer.sh start
zkServer.sh status

如果启动成功则会有一个leader节点,与n个follower节点

jps

会有QuorumPeerMain进程在运行

8.4 配置开机自启

cd /etc/init.d/
vim zookeeper
#编辑内容
#!/bin/bash
export JAVA_HOME=/usr/lib/jvm/jdk
export PATH=$PATH:$JAVA_HOME/bin
#chkconfig:2345 20 90
#description:zookeeper
#processname:zookeeper
case $1 in
start)
/usr/lib/zookeeper/zk/bin/zkServer.sh start
;;
stop)
/usr/lib/zookeeper/zk/bin/zkServer.sh stop
;;
status)
/usr/lib/zookeeper/zk/bin/zkServer.sh status
;;
restart)
/usr/lib/zookeeper/zk/bin/zkServer.sh restart
;;
*)
echo "require start|stop|status|restart"
;;
esac
chmod +x zookeeper
service zookeeper status

会发现通过系统service命令同样可以查看zk的状态,则可以将刚才配置的可执行文件添加到系统的自启动项里

chkconfig --add zookeeper
chkconfig zookeeper on

然后去重启机器测试

九、hadoop(所有节点)

9.1 安装hadoop

  • 将事先准备好的jar包上传到centos系统上,然后解压、添加软连接,我这里将安装路径放在了/usr/lib下
cd /usr/lib
mkdir hadoop
cd hadoop
cp /xxx/xxx/hadoop-3.1.4.gz .
tar -zxvf hadoop-3.1.4.gz .
ln -s /usr/lib/hadoop/hadoop-3.1.4 /usr/lib/hadoop/hadoop
  • 配置环境变量
vim /etc/profile
#在文件末尾追加
export HADOOP_HOME=/usr/lib/hadoop/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
hadoop version 

如果配置成功则会显示hadoop的版本信息

9.2 配置hadoop

  • hadoop-env.sh
vim hadoop-env.sh
#javahome
export JAVA_HOME=/usr/lib/jvm/jdk
#尽量指定一下pid路径,防止关闭找不到pid
export HADOOP_PID_DIR=/var/hadoop/pids

#文件末尾追加
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"
  • core-site.xml
vim core-site.xml

配置时一定要注意linux挂载的主要数据目录

df -H
/dev/mapper/centos-root   54G  6.2G   48G   12% /
devtmpfs                  17G     0   17G    0% /dev
tmpfs                     17G     0   17G    0% /dev/shm
tmpfs                     17G   12M   17G    1% /run
tmpfs                     17G     0   17G    0% /sys/fs/cgroup
/dev/sda2                1.1G  171M  893M   17% /boot
/dev/sda1                210M   12M  198M    6% /boot/efi
/dev/mapper/centos-home  6.0T  1.2G  6.0T    1% /home
tmpfs                    3.4G   13k  3.4G    1% /run/user/42
tmpfs                    3.4G     0  3.4G    0% /run/user/0

从上面的信息可以看到磁盘的主要挂载目录为/home,对应的hadoop.data.dir 也应该配置在该目录

    <!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop01:9000</value>
    </property>
    <!-- 指定hadoop数据的存储目录 ,用来指定hadoop数据的存储目录,此次配置用的hadoop.data.dir是自己定义的变量, 因为在hdfs-site.xml中会使用此配置的值来具体指定namenode 和 datanode存>储数据的目录-->
    <property>
        <name>hadoop.data.dir</name>
        <value>/home/hadoop/data</value>
    </property>
    <!-- hadoop 存放临时文件的地址 包括yarn的运行时container的信息等 ,hadoop默认放在操作系统/tmp目录下,这样会出问题,应为/tmp会在30天后清理数据-->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/tmp</value>
    </property>
  • hdfs-site.xml
<!-- 指定副本数  -->
<property>
  <name>dfs.replication</name>
  <value>2</value>
</property>

<!-- 指定NameNode数据的存储目录 -->
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file://${hadoop.data.dir}/name</value>
  </property>
 <!-- 指定Datanode数据的存储目录 -->

  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file://${hadoop.data.dir}/data</value>
  </property>

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

    <property>
    <name>dfs.namenode.checkpoint.dir</name>
    <value>file://${hadoop.data.dir}/namesecondary</value>
  </property>

   <!-- 兼容配置,先跳过 -->
    <property>
    <name>dfs.client.datanode-restart.timeout</name>
    <value>30</value>
  </property>

  <!-- nn web端访问地址-->
<property>
  <name>dfs.namenode.http-address</name>
  <value>hadoop01:9870</value>
</property>
  <!-- 2nn web端访问地址-->

  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop03:9868</value>
</property>

  • mapred-site.xml
<!-- 指定MapReduce程序运行在Yarn上 -->
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>

  • yarn-site.xml
<!-- Site specific YARN configuration properties -->
<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
 <!-- 指定ResourceManager的地址-->
<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop01</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.vmem-check-enabled</name>
<value>false</value>
</property>

  • workers
hadoop01
hadoop02
hadoop03

以上配置通过主节点配置好后通过ssh向其他子节点分发即可

9.3 启动hadoop

cd /usr/lib/hadoop/hadoop/sbin
./start-all.sh
jps
  • 主节点
40625 NodeManager
54193 Jps
14531 QuorumPeerMain
39860 DataNode
39638 NameNode
40365 ResourceManager
  • 子节点
33648 Jps
14465 QuorumPeerMain
20709 DataNode
20858 NodeManager
33648 Jps
14465 QuorumPeerMain
20709 DataNode
20858 NodeManager

9.4 页面查看

Hadoop集群信息:
http://hadoop01:8088/cluster
在这里插入图片描述

hdfs地址:
http://hadoop01:9870/dfshealth.html#tab-overview
在这里插入图片描述

dataNode 地址:
http://hadoop01:9864/datanode.html

在这里插入图片描述

nodeManager 地址:
http://hadoop01:8042/node
在这里插入图片描述

secondaryNameNode 地址:
http://hadoop03:9868/status.html
在这里插入图片描述

以上安装的过程使用root用户

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值