栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Ubuntu 20.04 搭建hadoop 集群

Ubuntu 20.04 搭建hadoop 集群

文章目录

1. 虚拟机的安装

1.1 下载VMware Workstation1.2 下载ubantu20.041.3 安装一台虚拟机1.4 安装Vmware Tools 2. 网络配置

2.1 添加权限2.2 DHCP动态分配IP地址2.3 配置静态IP地址2.4 主机名和IP地址映射 3. 安装必要工具

3.1 安装SSH3.2 安装JDK3.3 安装Mysql3.4 安装ZooKeeper3.6 安装Hadoop 4. 配置相关文件

4.1 修改hadoop 的配置文件

4.1.1 core-site.xml4.1.2 hdfs-site.xml4.1.3 mapred-site.xml4.1.4 yarn-site.xml4.1.5 workers 4.2 文件分发和命令传输的脚本文件

4.2.1 xsync4.2.2 xcall 5. 配置分布式集群

5.1 虚拟机的克隆5.2 修改主机名5.3 修改网络配置5.4 配置SSH免密登录5.5 测试xcall 和xsync命令5.5 设置non-login 环境变量 6. hadoop 的使用

6.1 开启HDFS6.2 开启yarn 7. 安装Hbase8. 踩坑记录

1. 虚拟机的安装 1.1 下载VMware Workstation

VM16pro百度网盘下载地址:链接:https://pan.baidu.com/s/1Lvijuq8CBb6yil-WGukYjw 提取码:if1n

VM官方下载地址:https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html
选择windows或者linux进行下载:

1.2 下载ubantu20.04

ubuntu20.04百度网盘下载链接:https://pan.baidu.com/s/1p2OwVDZ16H-Jh4NKCl4Vgw 提取码:8qjx
ubuntu 20.04.4LTS 官网下载地址:https://ubuntu.com/download/desktop

1.3 安装一台虚拟机
















找不到下一步
接下来就会进入安装导航,一般这时界面很小,往往会找不到安装的下一步按钮。这时候有两种方法可以解决:
【方法1】alt+鼠标拖动界面
【方法2】如果方法1 无法解决,则我们可以直接改变屏幕的分辨率。alt+ctrl+T 打开终端,输入xrandr 查看支持的分辨率大小。然后右键copy 1680x1050 (方便下一条命令时输入)

然后改变分辨率的大小,终端输入 xrandr - s 1680x1050, 然后关闭终端。





用户名可以随便起,但是要记住,因为后面的一些安装路径会用上。为了辨识三台主机,建议该主机名为hadoop1

然后等待安装,最后重启后,按enter键。

1.4 安装Vmware Tools

安装VMwareTools方便真机和虚拟机之间传输文件(鼠标直接拖拽),以及复制粘贴(真机ctrl+Cctrl+V, 虚拟机ctrl+shift+Cctrl+shift+V)
ctrl+atrl+T 打开终端输入如下命令

sudo apt upgrade
sudo apt install open-vm-tools-desktop -y
sudo reboot
2. 网络配置

首先可以先ping 一下外网,测试联网情况

ping www.baidu.com

ping不通,域名解析失败。因为缺少inet地址(即ipv4的ip地址)

2.1 添加权限

我们创建的普通用户权限不足,不能修改网络配置信息,要先为普通用户赋予root权限,这需要切换到root用户下。首先为root用户设置一个密码并切换到root用户

sudo passwd root
su root

为用户增加权限, sudo命令不用密码

vi /etc/sudoers

然后添加一行 (输入i进入插入模式)

用户名 ALL=(ALL:ALL)  ALL

修改一行

%sudo  ALL=(ALL:ALL)  NOPASSWD:ALL

然后保存退出(shift+:进入底行模式,然后输入wq!强制保存退出)

2.2 DHCP动态分配IP地址
sudo dhclient -v

这种方式可以正常ping通外网,但是有个弊端,每次重启虚拟机的时候,都要再次执行上面的指令

2.3 配置静态IP地址

点击该虚拟机的设置,选择NAT模式

首先在真机上打开cmd,输入ipconfig,nat配置对应的是vmnet8 , 我们需要让虚拟机的IP地址和192.168.247.1处于同一个网段下(你的电脑会是192.168.x.1

编辑网络配置信息文件

sudo gedit /etc/netplan/01-network-manager-all.yaml

注意不要直接复制粘贴!要修改下面的addresses 和 gateway4(原理参考 )

虚拟机ubuntu的ip与上文查到的192.168.x.1(例如我的是192.168.247.1)处于同一网段即可(例如我的ubuntu可以选择的IP可以是192.168.247.***, 此处我选取的是192.168.247.124)此处的192.168.x.1理解为主机的默认网关,在配置文件中的gateway4: 192.168.x.2 理解为虚拟机ubuntu的默认网关

network:
  ethernets:
    ens33:
          dhcp4: no
          addresses: [192.168.247.124/24]
          optional: true
          gateway4: 192.168.247.2
          nameservers:
            addresses: [8.8.8.8,8.8.8.4]
  version: 2
  renderer: NetworkManager

然后保存并退出

应用新的网络配置

sudo netplan apply

查看ip

ip addr

IP地址固定成功

测试联网情况

ping www.baidu.com

2.4 主机名和IP地址映射
sudo gedit /etc/hosts

注释

#127.0.1.1      hadoop1

添加
注意不要直接复制粘贴,此处要修改第三段数字(你的不一定是247)

192.168.247.124	hadoop1
192.168.247.125	hadoop2
192.168.247.126	hadoop3

然后保存并退出

3. 安装必要工具 3.1 安装SSH

安装ssh-server 和 ssh-client

sudo apt-get install openssh-server

修改 /etc/ssh/sshd_config 文件

gedit /etc/ssh/sshd_config

将PermitRootLogin prohibit-password 改为 PermitRootLogin yes

保存后重启ssh服务

3.2 安装JDK

参考:https://blog.csdn.net/weixin_38924500/article/details/106261971
安装openjdk-8-jdk

sudo apt-get install openjdk-8-jdk

查看java版本,看看是否安装成功

java -version

3.3 安装Mysql

安装mysql

#命令1 更新源
sudo apt-get update
#命令2 安装mysql服务
sudo apt-get install mysql-server

初始化设置

sudo mysql_secure_installation
#1
VALIDATE PASSWORD PLUGIN can be used to test passwords...
Press y|Y for Yes, any other key for No: N (选择N ,不会进行密码的强校验)

#2
Please set the password for root here...
New password: (输入密码)
Re-enter new password: (重复输入)

#3
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them...
Remove anonymous users? (Press y|Y for Yes, any other key for No) : N (选择N,不删除匿名用户)

#4
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network...
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : N (选择N,允许root远程连接)

#5
By default, MySQL comes with a database named 'test' that
anyone can access...
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : N (选择N,不删除test数据库)

#6
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y (选择Y,修改权限立即生效)


检查mysql 服务状态

systemctl status mysql.service


配置环境变量

vi  /etc/profile

添加

export MYSQL_HOME=/usr/share/mysql 
export PATH=$MYSQL_HOME/bin:$PATH 

刷新环境变量

source /etc/profile 

启动和停止mysql服务

#停止
sudo service mysql stop
#启动
sudo service mysql start

进入mysql 数据库

mysql -u root -p  


更多mysql相关操作:https://blog.csdn.net/weixin_38924500/article/details/106261971

3.4 安装ZooKeeper

ZooKeeper3.4.6 下载链接:https://pan.baidu.com/s/1gRfYdOTMJF4UMP3_JD9VWA
提取码:2nd8

将下载的安装包移动到/opt 目录下

mv zookeeper-3.4.6.tar.gz /opt

解压

cd /opt
tar -zxvf  zookeeper-3.4.6.tar.gz

在conf中新建zoo.cfg文件

cd /opt/zookeeper-3.4.6/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg

添加如下内容

 # 客户端心跳时间(毫秒) 
 tickTime=2000 
 # 允许心跳间隔的最大时间 
 initLimit=10 
 # 同步时限 
 syncLimit=5 
 # 数据存储目录 
 dataDir=/opt/zookeeper-3.4.6/tmp
 # 端口号 
 clientPort=2181 
 # 集群节点和服务端口配置 
 server.1=hadoop1:2888:3888 
 server.2=hadoop2:2888:3888 
 server.3=hadoop3:2888:3888 

注:
dataDir 是缓存数据路径
2888为组成zookeeper服务器之间的通信端口,3888为用来选举leader的端口
新建zookeeper缓存数据目录

mkdir tmp

同步到hadoop2 和hadoop3

xsync /opt/zookeeper-3.4.6/

然后分别在三台虚拟机上执行如下操作:
添加环境变量

vi /etc/profile

最下面加上两行

export ZOOKEEPER_HOME=/opt/zookeeper-3.4.6
export PATH=$ZOOKEEPER_HOME/bin:$PATH 

刷新环境变量

source /etc/profile

在hadoop1上执行

cd /opt/zookeeper-3.4.6/tmp
touch myid
echo 1 > myid

在hadoop2上执行

cd /opt/zookeeper-3.4.6/tmp
touch myid
echo 2 > myid

在hadoop3上执行

cd /opt/zookeeper-3.4.6/tmp
touch myid
echo 3 > myid

在三台虚拟机上启动zookeeper

cd  /opt/zookeeper-3.4.6/bin
./zkServer.sh start

hadoop1启动成功

hadoop2启动成功

hadoop3启动成功

在三台虚拟机上查看节点状态

./zkServer.sh status




从上面的执行结果可以看出,zookeeper集群已经启动成功了。

3.6 安装Hadoop

【下载方法1】
百度网盘下载hadoop3.2.2:https://pan.baidu.com/s/1rX9aAkKzh-VTFtWAf3gurg 提取码:lc6x
【下载方法2】
hadoop 官网下载地址
下载hadoop3.2.2 安装包

wget https://dlcdn.apache.org/hadoop/common/hadoop-3.2.2/hadoop-3.2.2.tar.gz


解压

tar xzf hadoop-3.2.2.tar.gz


先切换到用户目录下(zyw是我、的用户名),添加环境变量

cd  /home/zyw
sudo vi .bashrc

注意不要直接粘贴,修改HADOOP_HOME的路径(zyw是我的用户名)

#Hadoop Related Options
export HADOOP_HOME=/home/zyw/hadoop-3.2.2
export HADOOP_INS、TALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/nativ"

保存并退出

配置生效 (添加完成后一定不要忘记这个

source .bashrc

修改环境变量

gedit ~/.profile

在末尾添加

# hadoop
export HADOOP_HOME=/home/zyw/hadoop-3.2.2
export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
source .profile

修改 hadoop-env.sh
不要直接复制粘贴,zyw是我的用户名

gedit  /home/zyw/hadoop-3.2.2/etc/hadoop/hadoop-env.sh

在首行添加JAVA_HOME (如果不确定自己的JAVA_HOME,先按照后面的方法查看一下

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_HOME=/home/zyw/hadoop-3.2.2
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"
export HDFS_DATANODE_USER=root
export HADOOP_SECURE_DN_USER=root
export HDFS_NAMENODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

保存并退出

JAVA_HOME的查看方式

which javac
readlink -f /usr/bin/javac


检查hadoop是否安装成功

hadoop version

4. 配置相关文件 4.1 修改hadoop 的配置文件

进入配置文件目录(zyw是我的用户名)

cd /home/zyw/hadoop-3.2.2/etc/hadoop/
4.1.1 core-site.xml

新建一个空文件夹/home/zyw/hadoop-3.2.2/tmp

vi core-site.xml

中添加
不要直接复制粘贴 /home/zyw/tmpdata 是我在本地新建的一个空目录


        
          fs.defaultFS
          
          hdfs://hadoop1:9000
        

        
          hadoop.tmp.dir
	  /home/zyw/hadoop-3.2.2/tmp
          A base for other temporary directories.
        

4.1.2 hdfs-site.xml

新建两个空文件夹/home/zyw/hadoop-3.2.2/hdfs/name /home/zyw/hadoop-3.2.2/hdfs/data
编辑 hdfs-site.xml

vi hdfs-site.xml

中添加
不要直接复制粘贴 /home/zyw/dfsdata/namenode, /home/zyw/dfsdata/datanode 是我本地创建的目录


	
    		dfs.namenode.http-address
    		hadoop1:50070
	
        
                dfs.replication
                2
        
        
                dfs.namenode.name.dir
		file:/home/zyw/hadoop-3.2.2/hdfs/name
        
        
                dfs.datanode.data.dir
		file:/home/zyw/hadoop-3.2.2/hdfs/data
        

4.1.3 mapred-site.xml
gedit mapred-site.xml

中添加并保存



       mapreduce.framework.name
       yarn


       mapreduce.jobhistory.address
       hadoop1:10020


       mapreduce.jobhistory.webapp.address
       hadoop1:19888




4.1.4 yarn-site.xml
gedit yarn-site.xml

中添加并保存






        yarn.nodemanager.aux-services
        mapreduce_shuffle


        yarn.resourcemanager.hostname
        hadoop1


        yarn.nodemanager.env-whitelist
        JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME


       yarn.webapp.ui2.enable
       true


       yarn.nodemanager.vmem-check-enabled
       false


4.1.5 workers
gedit workers
hadoop1
hadoop2
hadoop3
4.2 文件分发和命令传输的脚本文件

在用户目录下创建一个bin目录 (zyw是我的用户名)

cd /home/zyw
mkdir bin
cd bin
4.2.1 xsync

在该目录下创建xsync文件,此脚本用于虚拟机之间通过scp传送文件

gedit xsync

添加内容如下

#!/bin/bash
#校验参数是否合法
if(($#==0))
then
        echo 请输入要分发的文件!
        exit;
fi
#获取分发文件的绝对路径
dirpath=$(cd `dirname $1`; pwd -P)
filename=`basename $1`

echo 要分发的文件的路径是:$dirpath/$filename

#循环执行rsync分发文件到集群的每条机器
for((i=1;i<=3;i++))
do
        echo ---------------------hadoop$i---------------------
        rsync -rvlt $dirpath/$filename  hadoop$i:$dirpath
done

修改权限

chmod 777 xsync 

拷贝到系统目录的bin下

sudo cp xsync /bin
4.2.2 xcall

然后在该目录下创建xcall文件,此脚本用于对所有声明的虚拟机进行命令的传输

gedit xcall

添加内容如下

#!/bin/bash
#在集群的所有机器上批量执行同一个命令
if(($#==0))
then
        echo 请输入要操作的命令!
        exit;
fi

echo 要执行的命令是$*

#循环执行此命令
for((i=1;i<=3;i++))
do
        echo --------------------hadoop$i--------------------
        ssh hadoop$i $*
done

修改权限

chmod 777 xcall 

拷贝到系统目录的bin下

sudo cp xcall /bin
5. 配置分布式集群 5.1 虚拟机的克隆

在终端输入命令关闭虚拟机

shutdown -h now

克隆





按照上面的步骤再克隆一台hadoop3

5.2 修改主机名

克隆的另外两台主机显示的仍是hadoop1

在两台被克隆的虚拟机上分别修改

sudo gedit /etc/hostname

在hadoop2上:

在hadoop3上:

保存后,关闭当前的终端。然后点击用户文件夹(刷新作用)

重新打开终端,修改成功

5.3 修改网络配置

编辑网络配置信息文件

sudo gedit /etc/netplan/01-network-manager-all.yaml

修改IP地址的一行(注意你的ubuntu网段要和真机的网段匹配,比如说我的前三位一定是192.168.247 最后一位分别是124、125、126)
hadoop2:

addresses: [192.168.x.125/24]

hadoop3:

addresses: [192.168.x.126/24]


不要忘记应用新的网络配置

sudo netplan apply
5.4 配置SSH免密登录

在三台虚拟机上分别执行:

ssh-keygen -t rsa

此处生成rsa密钥,一直回车即可

然后将这三个密钥在三台虚拟机上相互传输
首先,在hadoop1上向hadoop2、hadoop3发送

ssh-copy-id hadoop2
ssh-copy-id hadoop3

然后,在hadoop2上向hadoop1、hadoop3发送

ssh-copy-id hadoop1
ssh-copy-id hadoop3

最后,在hadoop3上向hadoop1、hadoop2发送

ssh-copy-id hadoop1
ssh-copy-id hadoop2


然后分别在三台主机上键入

ssh hadoop1
ssh hadoop2
ssh hadoop3

可以免密相互登录

5.5 测试xcall 和xsync命令

【测试xcall】
使用xcall来关闭三台虚拟机上的防火墙,在任意一台虚拟机的终端上输入

xcall ufw disable


【测试xsync】
在任意一台虚拟机上修改文件slaves

cd /home/zyw/hadoop-3.2.2/etc/hadoop/
vi slaves

修改内容为:

hadoop1
hadoop2
hadoop3

使用xsync脚本将修改的文件分发到另外两台虚拟机上

cd ../
xsync hadoop/

5.5 设置non-login 环境变量

我们使用的xcall脚本是以non-login的方式打开一个bash执行命令的,此时不会读取配置文件~/.profile,而是读取 ~/.bashrc。

先在hadoop1上修改配置文件~/.bashrc

gedit ~/.bashrc

在文件的首行加入

source ~/.profile

然后注释下面 ~/.profile的内容

#if [ -n "$BASH" ]; then
    # include .bashrc if it exists
#    if [ -f "$HOME/.bashrc" ]; then
#	. "$HOME/.bashrc"
#    fi
#fi

接着将修改过的 ~/.profile和~/.bashrc文件分发到另外两台虚拟机上

xsync ~/.profile
xsync ~/.bashrc

测试

xcall jps

6. hadoop 的使用

hadoop初始化
在hadoop01中输入

hadoop namenode -format
6.1 开启HDFS

在hadoop01上开启hdfs

start-dfs.sh 或 start-all.sh

在这里插入图片描述

在hadoop1的浏览器上访问

http://192.168.247.124:50070  或者 http://localhost:50070

出现三个节点的信息,说明集群搭建成功。

6.2 开启yarn

然后在hadoop1上开启yarn

start-yarn.sh

在hadoop1的浏览器上访问

http://192.168.247.124:8088 或者 http://localhost:8088

使用xcall jps 查看所有节点的运行情况

7. 安装Hbase

将压缩包拖动到虚拟机上的用户目录下
将下载的安装包移动到/opt 目录下

mv hbase-1.2.6-bin.tar.gz /opt

解压

cd /opt
tar -zxvf  hbase-1.2.6-bin.tar.gz

添加环境变量

vi /etc/profile

最下面加上两行

export SCALA_HOME=/opt/scala-2.13.0
export PATH=$SCALA_HOME/bin:$PATH

刷新环境变量

source /etc/profile

进入conf目录,修改hbase-env.sh

cd /opt/hbase-1.2.6/conf/ 
 vi hbase-env.sh 

将JAVA_HOME, HADOOP_HOME, Hbase_LOG_DIR, Hbase_MANAGES_ZK修改为以下内容:

# 配置JDK安装路径 
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
# 配置Hadoop安装路径
export HADOOP_HOME=/home/zyw/hadoop-3.2.2
# 设置Hbase的日志目录 
export Hbase_LOG_DIR=/opt/hbase-1.2.6/logs 
# 使用独立的ZooKeeper集群 
export Hbase_MANAGES_ZK=false 
# 设置pid的路径 (啥用?)
export Hbase_PID_DIR=/home/hadoop_files 

配置hbase-site.xml

vi hbase-site.xml 

    
        hbase.rootdir
         hdfs://hadoop1:9000/hbase
    
    
        hbase.cluster.distributed
        true
    
    
    
        hbase.master.port
        16000
    
    
        hbase.zookeeper.quorum
        hadoop1,hadoop2,hadoop3
    
    
    
        hbase.zookeeper.property.clientPort
        2181
    
    
        hbase.zookeeper.property.dataDir
        /opt/zookeeper-3.4.6/tmp
    
    
    
        zookeeper.znode.parent
        /hbase
    

8. 踩坑记录
zyw@hadoop01:~/hadoop-3.2.2/etc/hadoop # .start-dfs.sh
Starting namenodes on [master]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [slave1]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.

在/hadoop/sbin路径下:
将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数

#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

start-yarn.sh,stop-yarn.sh顶部也需添加以下:

#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
# Licensed to the Apache Software Foundation (ASF) under one or more

修改完成后,重新启动。

参考:
https://blog.csdn.net/qq_44937291/article/details/112298318
https://home.uncg.edu/cmp/downloads/files/Part%202.pdf
https://phoenixnap.com/kb/install-hadoop-ubuntu

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/761907.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号