大数据运维实践

大数据平台构建与应用

原生Hadoop全分布式大数据平台构建

大数据 刘新兵

二〇二六年四月

Linux环境设置

安装Hadoop集群时要确保以下几个方面

1.本机与虚拟机之间是否可以通信(Ping)。如果不行检查下面

1.1本机防火墙关闭(开启情况是本机可以ping虚拟机,虚拟机不能ping本机)

1.2虚拟机是克隆的情况(按照Linux文档中,修改ip地址等方法)

1.3虚拟机设置--网卡是否是仅主机模式或者桥接模式:仅主机模式需要检查VMware1网卡设置与虚拟机网卡设置是否匹配。桥接模式是为了让虚拟机可以连接外网,只需要改该虚拟机网卡信息即可(网关)

2.虚拟机与虚拟机之间是否可以通信(Ping)。

//关闭本机网络管理

# /etc/init.d/NetworkManager stop

# chkconfig NetworkManager off

//清空和关闭防火墙

# iptables -F

# chkconfig iptables off

# service iptables save

(4)关闭firewall系统防火墙:

systemctl stop firewalld.service   #停止firewall

systemctl disable firewalld.service #禁止firewall开机启动

firewall-cmd --state #查看默认防火墙状态(关闭后显示 notrunning,开启后显示running)

//更改主机名称

6.x:  vi /etc/sysconfig/network

7.x: hostnamectl set-hostname 主机名

//更改主机与ip映射

# vi /etc/hosts

//安装JDK

# tar -xvf jdk-7u79-linux-x64.tar.gz

# mv jdk1.7.0_79/ jdk

//修改系统环境变量

# vi /etc/profile

export JAVA_HOME=/home/bigdata/jdk/

export HADOOP_HOME=/home/bigdata/hadoop/

export HIVE_HOME=/home/bigdata/hive/

export ZOOKEEPER_HOME=/home/bigdata/zookeeper/

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:

export PATH=$PATH:$JAVA_HOME/bin:/home/bigdata/protoc/bin:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:

//使修改后的系统生效

# source /etc/profile

//设置免密码ssh  方式一  选其一

# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

# scp ~/.ssh/authorized_keys slave1:/root/.ssh/

# scp ~/.ssh/authorized_keys slave2:/root/.ssh/

//设置免密码ssh  方式二  选其一

ssh-keygen -t rsa

ssh-copy-id -i ~/.ssh/id_rsa.pub master@root

ssh-copy-id -i ~/.ssh/id_rsa.pub slave1@root

ssh-copy-id -i ~/.ssh/id_rsa.pub slave2@root

//设置免密码ssh  方式三  选其一  (推荐)

ssh-keygen -t rsa

ssh-copy-id hadoop01

ssh-copy-id hadoop02

ssh-copy-id hadoop03

使用scp传输文件:

scp -r ./hadoop-3.1.3/ root@hadoop03:/opt/

Hadoop集群下的全分布式平台构建

集群规划如下:

主机名称

IP地址

功能角色

hadoop01-master

192.168.146.145

NameNode、DataNode

hadoop02-slave1

192.168.146.146

DataNode

hadoop03-slave2

192.168.146.147

DataNode

所有机子都需要配置

1.JDK        2.SSH免登陆      3.Hadoop集群配置八大文件

SSH免登陆

计算机A每次SSH远程连接计算机B时,都需要输入密码。当有些软件需要频繁使用SSH连接其他计算机时,这个时候需要人工填写计算机B的密码,这个会造成大量无用操作,不利于程序的使用。

在为了避免这类问题的发生,而且也要兼顾安全问题(设置SSH免密码登陆后,SSH这台计算就不需要密码即可登陆,存在安全隐患),使用公钥和私钥方式解决SSH免密码登陆问题,而且只在一边做,另一边不做,这样也达到了安全的问题。一般是那台机器需要SSH远程其他机器,就在这台机器上设置SSH免登陆操作。

"公私钥"认证方式简单的解释:首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub; 私钥文件:~/.ssh/id_rsa)。然后把公钥放到服务器上(~/.ssh/authorized_keys), 自己保留好私钥.在使用ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了。

ssh 无密码登录要使用公钥与私钥。linux下可以用ssh-keygen生成公钥/私钥对.

//master机下生成公钥/私钥对。

# ssh-keygen -t rsa

//追加到key文件当中

# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

//将master机子上的key给其他机子上发送一份

# scp ~/.ssh/authorized_keys slave1:/root/.ssh/

# scp ~/.ssh/authorized_keys slave2:/root/.ssh/

配置阿里云国内yum源

1、创建CentOS-Base.repo 或 CentOS-7.repo

# CentOS-Base.repo

#

# The mirror system uses the connecting IP address of the client and the

# update status of each mirror to pick mirrors that are updated to and

# geographically close to the client.  You should use this for CentOS updates

# unless you are manually picking other mirrors.

#

# If the mirrorlist= does not work for you, as a fall back you can try the

# remarked out baseurl= line instead.

[base]

name=CentOS-$releasever - Base - mirrors.aliyun.com

failovermethod=priority

baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/

        http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/

        http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/

gpgcheck=1

gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#released updates

[updates]

name=CentOS-$releasever - Updates - mirrors.aliyun.com

failovermethod=priority

baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/

        http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/

        http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/

gpgcheck=1

gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful

[extras]

name=CentOS-$releasever - Extras - mirrors.aliyun.com

failovermethod=priority

baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/

        http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/

        http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/

gpgcheck=1

gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages

[centosplus]

name=CentOS-$releasever - Plus - mirrors.aliyun.com

failovermethod=priority

baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/

        http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/

        http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/

gpgcheck=1

enabled=0

gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#contrib - packages by Centos Users

[contrib]

name=CentOS-$releasever - Contrib - mirrors.aliyun.com

failovermethod=priority

baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/

        http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/

        http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/

gpgcheck=1

enabled=0

gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

2、清理并更新缓存

yum clean all && yum makecache

  1. 验证

yum list

对防火墙的操作  开启:systemctl start firewalld

  关闭:systemctl stop firewalld

  写入系统开机自启服务项:systemctl enabled firewalld

  取消开机自启: systemctl disable firewalld

  查看防火墙的状态:firewall-cmd --state

配置ntp时间服务

#master主节点中:

# yum -y install ntp  //安装ntp时间服务

# vi /etc/ntp.conf  // 修改配置文件

注释或者删除以下4行

server 0.centos.pool.ntp.org iburst

server 1.centos.pool.ntp.org iburst

server 2.centos.pool.ntp.org iburst

server 3.centos.pool.ntp.org iburst

添加以下两行:

server 127.127.1.0

fudge 127.127.1.0 stratum 10

#systemctl enable ntpd   // 设置服务开机自启动

#systemctl start ntpd    // 设置服务立即启动

# slave从节点中:

# yum -y install ntpdate   // 安装

# ntpdate master.hadoop  // 时间同步

# systemctl enable ntpdate // 设置启动

Hadoop集群搭建

修改hadoop-env.sh文件

将hadoop-env.sh文件中的

export JAVA_HOME=${JAVA_HOME}

export JAVA_HOME="/home/bigdata/jdk"

1修改core-site.xml文件

<property>

<name>fs.defaultFS</name>

<value>hdfs://node-1:8020</value>

</property>

<property>

<name>io.file.buffer.size</name>

<value>4096</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/home/bigdata/tmp</value>

</property>

2修改hdfs-site.xml文件

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

<property>

<name>dfs.block.size</name>

<value>134217728</value>

</property>

<property>

<name>dfs.namenode.name.dir</name>

<value>file:///home/hadoopdata/dfs/name</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>file:///home/hadoopdata/dfs/data</value>

</property>

<property>

<name>fs.checkpoint.dir</name>

<value>file:///home/hadoopdata/checkpoint/dfs/cname</value>

</property>

<property>

<name>fs.checkpoint.edits.dir</name>

<value>file:///home/hadoopdata/checkpoint/dfs/cname</value>

</property>

<property>

   <name>dfs.http.address</name>

   <value>node-1:50070</value>

</property>

<property>

   <name>dfs.secondary.http.address</name>

   <value>node-2:50090</value>

</property>

<property>

<name>dfs.webhdfs.enabled</name>

<value>true</value>

</property>

<property>

<name>dfs.permissions</name>

<value>false</value>

</property>

3修改mapred-site.xml文件

命令如下:

# mv mapred-site.xml.template mapred-site.xml

#vi mapred-site.xml

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

<final>true</final>

</property>

<property>

<name>mapreduce.jobhistory.address</name>

<value>node-1:10020</value>

</property>

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>node-1:19888</value>

</property>

4修改yarn-site.xml

<property>

<name>yarn.resourcemanager.hostname</name>

<value>node-1</value>

</property>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.resourcemanager.address</name>

<value>node-1:8032</value>

</property>

<property>

<name>yarn.resourcemanager.scheduler.address</name>

<value>node-1:8030</value>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>node-1:8031</value>

</property>

<property>

<name>yarn.resourcemanager.admin.address</name>

<value>node-1:8033</value>

</property>

<property>

<name>yarn.resourcemanager.webapp.address</name>

<value>node-1:8088</value>

</property>

5 修改/etc/hadoop/slaves

将所有需要配置成slave类型的机器的机器名写在其内部即可.

注意:每个机器名占一行。

master

slave1

slave2

#vi /etc/hadoop/master

Master文件存的是的secondarynamenode列表

slave1

//将配置好的jdk文件夹和Hadoop文件夹发送给slave1和slave2机子

# scp -r jdk/ slave1:/home/bigdata/jdk

# scp -r jdk/ slave2:/home/bigdata/jdk

# scp -r /home/bigdata/hadoop slave1:/home/bigdata/

# scp -r /home/bigdata/hadoop slave2:/home/bigdata/

3.x版本中需配置hadoop-env.sh如下:

export JAVA_HOME=/opt/jdk1.8

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"

3.x版本中需配置workers主机列表,如下:

hadoop01

hadoop02

hadoop03

//启动Hadoop集群只在主节点中做(hadoop01)

//启动之前先格式化,只需要一次即可

#hadoop namenode -format  2.x使用

#hdfs namenode -format  3.x使用

#bin/hdfs namenode -format

//启动namenode、datanode、ResourceManager、NodeManager节点

# start-dfs.sh

# start-yarn.sh

Job-server启动:mr-jobhistory-daemon.sh start historyserver

附:静态IP配置

由于虚拟机IP经常改变,使用Xshell连接不成功,询最新IP,然后再使用Xshell进行连接,这样就有点麻烦。如果修改DHCP的最长租用时间,即使修改到最大值,到期后,还是会改变IP。所以,还是直接配置静态IP,这样就不会出现IP改变的情况。

1、查看VMware网络配置信息

网络配置信息如下:

IP地址范围:192.168.186.128 - 192.168.186.254

子网掩码:255.255.255.0

网关:192.168.186.2

2、修改配置文件

配置文件所在目录为/etc/sysconfig/network-scripts,一般以ifcfg-开头,如ifcfg-ens33、ifcfg-eth0等。

查看配置文件内容(/etc/sysconfig/network-scripts/ifcfg-ens33):

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=dhcp

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens33

UUID=f50ffcfa-6f5f-420b-a931-a02389b998ab

DEVICE=ens33

ONBOOT=yes

修改以下参数:

BOOTPROTO=static

ONBOOT=yes

IPADDR=192.168.186.129

NETMASK=255.255.255.0

GATEWAY=192.168.186.2

DNS1=192.168.186.2

查看完整内容:

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

#BOOTPROTO=dhcp

BOOTPROTO=static

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens33

UUID=f50ffcfa-6f5f-420b-a931-a02389b998ab

DEVICE=ens33

ONBOOT=yes

IPADDR=192.168.186.129

NETMASK=255.255.255.0

GATEWAY=192.168.186.2

DNS1=192.168.186.2

3、重启网络

systemctl restart netwrok

4、查看IP

ip addr

安装Nginx服务

yum install -y epel-release

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐