hadoop安装集群搭建

准备工作:

1,创建一台虚拟机,安装java jdk 这里选择1.8

2,给虚拟机并配置好静态IP地址

一:Java jdk安装

1.1检查安装环境,是否已安装其他版本的jdk,有的话卸载。

# 查看系统JDK进程
[root@hadoop102 ~]# rpm -qa|grep jdk
java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
 # 卸载:
[root@hadoop102 ~]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
 [root@hadoop102 ~]# rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64

1.2安装jdk通过xftp或者terminus将安装包放到Linux指定目录

1.3解压jdk安装包到指定目录

# tar -zxvf jdk的压缩包 -C 目标路径
[root@hadoop102 software]# tar -zxvf jdk-8u131-linux-x64.tar.gz -C /opt/module

1.4配置环境变量

方法一:直接在系统文件后面追加(不建议)

# sudo以管理员的权限编辑
[root@hadoop102 ~]# sudo vim /etc/profile

# 修改文件
[root@hadoop102 ~]# sudo vim /etc/profile
 # 在文件末尾追加
export JAVA_HOME=/opt/module/jdk1.8.0_131
export PATH=$PATH:$JAVA_HOME/bin

方法二:新定义一个配置文件

# 在profile.d目录下创建一个自己的.sh文件 my_env.sh
[root@hadoop102 profile.d]# sudo vim my_env.sh

# JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_131(注意这里是自己jdk的安装路径)
export PATH=$PATH:$JAVA_HOME/bin

1.5刷新配置文件使其生效

# 刷新环境变量,配置文件更新
[root@hadoop102 ~]# source /etc/profile
 
# 查看JDK版本
[root@hadoop102 ~]# java -version

hadoop安装集群搭建_第1张图片

 二:Linux集群搭建

2.1首先创建好一台虚拟机然后配置好静态IP

2.11这里记录安装好之后配置静态IP的流程。(虚拟机安装可以参考:https://blog.csdn.net/s980629/article/details/130265746?spm=1001.2014.3001.5502

静态IP配置:

2.12在VMware虚拟机左上角任务栏点击编辑(E),点击虚拟网络编辑器(N),点击类型是NAT模式那一栏,记住最下面的ip地址

hadoop安装集群搭建_第2张图片

 2.13设置网关:再点击 NAT设置 按钮

hadoop安装集群搭建_第3张图片

2.21 在本机配置虚拟网卡的IP地址。

可以直接在电脑的任务栏中选中网络那里右键打开 网络和共享中心,在左边点击 更改适配器设置,然后右键选属性打开 VMare Network Adapter VMnet8, 在打开的页面上选 Internet协议版本4,点击属性,在打开的页面选择 使用下面的ip地址 ,ip地址可以填192.168.110.1 默认网关必须与前面的第三步配好的网关ip一致也就是 192.168.110.2,就此虚拟机的固定ip地址就配完了

hadoop安装集群搭建_第4张图片

 2.3进入/etc/sysconfig/network-scripts/目录

cd /etc/sysconfig/network-scripts/

查看目录下的文件:ls,找到ifcfg-ens32(你们不一定是32,可能是33等数字不相同,反正就是他)

2.4 编辑ifcfg-ens33文件:vim ifcfg-ens32(你们是33就输入:vim ifcfg-ens33

修改:

BOOTPROTO=static    
ONBOOT=yes

然后最下面添加(前3位与记录的ip一致即可,我的是192.168.110):
注:GATEWAY 是网关,DNS1 与网关保持一致,并且二者与上面记下来的网关一致,我这里是192.168.110.2

IPADDR=192.168.110.110
GATEWAY=192.168.110.2
NETMASK=255.255.255.0
DNS1=192.168.110.2

强制保存退出。:wq!

2.5 重启服务器service network restart

输入 Ifconfig 查看现在的地址是否是新配置的地址。

hadoop安装集群搭建_第5张图片

 至此静态IP已经配置完成了。

2.2 虚拟机集群克隆

这里请参考博客:Linux克隆虚拟机的IP地址与主机名修改(二)_linux克隆虚拟机修改ip_+uuid+的博客-CSDN博客

2.3 集群之间通信配置

2.31

关闭防火墙 :systemctl stop firewalld

禁止防火墙开机自启动:systemctl disable firewalld

重启:reboot

2.32 etc/hots  文件配置

集群中的每一个虚拟机都要修改/etc//hosts文件,添加所有的虚拟机到文件中其他虚拟机访问(根据自己的IP去修改)

# 在/etc/hosts文件中添加集群主机IP地址+hostname+别名
[root@hadoop102 ~]$ vim /etc/hosts
 
# 添加的内容
192.168.110.122 hadoop102 hadoop102
192.168.110.123 hadoop103 hadoop103
192.168.110.124 hadoop104 hadoop104

2.33将该文件同步给其他两个主机:

scp可以实现服务器与服务器之间的数据拷贝。( from server1 to server2 ) 

scp      -r      $pdir/$fname         $user@host:$pdir/$fname
命令     递归   要拷贝的文件路径/名称   目的地用户@主机:目的地路径/名称

案例1:在hadoop102机器上拷贝jdk到hadoop103机器中

# 将hadoop102服务器的jdk拷贝到hadoop103的/opt/module/目录下
[root@hadoop102 module]$ scp -r jdk1.8.0_131/  root@hadoop103:/opt/module/

案例2:在hadoop103机器上拉取hadoop102的jdk到本机中

# 将hadoop102服务器的jdk拉取到hadoop103的/opt/module/目录下
[root@hadoop103 module]$ scp -r root@hadoop102:/opt/module/hadoop-3.1.3 ./

案例3: 在hadoop103机器上拉取hadoop102的jdk拷贝到hadoop104机器中

# 在hadoop103机器上拉取hadoop102的jdk拷贝到hadoop104机器中
[root@hadoop103 module]$ scp -r root@hadoop102:/opt/module/* root@hadoop104:/opt/module/

2.34 rsync远程同步工具

rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync和scp区别: 用rsync 做文件的复制要比 scp 的速度快,rsync 只对差异文件做更新。scp是把所有文件都复制过去。

rsync      -av      $pdir/$fname         $user@host:$pdir/$fname
命令       递归   要拷贝的文件路径/名称   目的地用户@主机:目的地路径/名称

hadoop安装集群搭建_第6张图片

 案例:删除hadoop103中/opt/module/hadoop-3.1.3/下的wciput与 wcoutput文件

[root@hadoop103 hadoop-3.1.3]$ rm -rf wcinput wcoutput

同步hadoop102中的/opt/module/hadoop-3.1.3/到hadoop103中,恢复这两个文件。

[root@hadoop102 module]$ rsync -av hadoop-3.1.3/ root@hadoop103:/opt/module/hadoop-3.1.3/

2.35配置集群分发 xsync 集群分发

(1)需求:循环复制文件到所有节点的相同目录下
(2)需求分析:
        (a) rsync 命令原始拷贝:

                rsync -av /opt/module root@hadoop103:/opt/module/

        (b)期望脚本: 命令后直接跟文件名就可直接为集群中的其他服务器同步。
                xsync 要同步的文件名称
        (c)期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)            

                [root@hadoop102 ~]$ echo $PATH

脚本实现:

上面已经查看了环境配置,其中有一个/root/bin目录,我们查看/root目录下并没有该bin目录,我们可以先创建一个bin目录,在bin目录中创建文件编写内容,就可实现全局生效。

[root@hadoop102 bin]$ vim xsync

添加:

# !/bin/bash
 
# 1. 判断参数个数(是否小于1,小于1直接退出)
if [ $# -lt 1 ]
then
    echo Not Enough Arguemnet!
    exit;
fi
 
# 2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
    echo ===================== $host =====================
    # 3. 遍历所有目录,挨个发送
    for file in $@
    do
        # 4. 判断文件是否存在
        if [ -e $file ]
            then
                # 5. 获取父目录
                pdir=$(cd -P $(dirname $file);pwd)
                # 6. 获取当前文件的名称
                fname=$(basename $file)
                ssh $host "mkdir -p $pdir"
                rsync -av $pdir/$fname $host:$pdir
            else
                echo $file does not exists!
        fi
    done
done

添加权限:chmod 777 xsync

测试:[root@hadoop102 ~]$ xsync bin  把bin文件夹分到另外两个主机中。

可以用全路径,也可以用相对路径:

xsync /etc/profile.d/my_env.sh

2.36 配置集群之间免密登录

hadoop安装集群搭建_第7张图片

 查看.ssh文件

# -la 查看文件的所有文件/目录包含隐藏文件/目录
[root@hadoop102 ~]$ ls -la

查看.ssh  文件

因为xsync文件执行过ssh命令,所以会有一个.ssh文件

[root@hadoop102 .ssh]$ cat known_hosts

配置102 无密访问103,104

# 生成公钥与私钥,需要敲三次回车
[root@hadoop102 .ssh]$ ssh-keygen -t rsa

将102上的公钥拷贝到103

[root@hadoop102 .ssh]$ ssh-copy-id hadoop103

对自己也发一份(自己访问时也需要密码)

配置完会多一个文件 authorized_keys,存储着其他服务器的公钥,用于免密访问。

103 104 同样的操作即可。

补充:查看集群所有的进程。

[root@hadoop102 ~]# vim /bin/jpsall

#!/bin/bash
 
for host in hadoop102 hadoop103 hadoop104
do
    echo ========================= $host =========================
    ssh $host jps
done

三:Hadoop集群搭建(前面是准备工作)

3.1准备好hadoop3.1.3安装包

解压安装包到指定路径(这里是我的):/opt/moudle

[root@hadoop101 software]$ tar -zxvf hadoop-3.1.3.tar.gz -
C /opt/module/

hadoop安装集群搭建_第8张图片

 3.2添加环境变量

hadoop安装集群搭建_第9张图片

#HADOOP_HOME
export HADOOP_HOME=/opt/moudle/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HIVE_HOME=/opt/moudle/hive
export PATH=$PATH:$HIVE_HOME/bin

source /etc/profile  更新配置文件

编写配置文件:core-site.xml



 
 
  fs.defaultFS
  hdfs://hadoop102:8020
 

 
 
  hadoop.tmp.dir
  /opt/moudle/hadoop-3.1.3/data
 

 
 
  hadoop.http.staticuser.user
  root
 



    hadoop.proxyuser.root.hosts
    *

 


    hadoop.proxyuser.root.groups
    *

 


    hadoop.proxyuser.root.users
    *

---yarn-site.xml



 
 
  yarn.nodemanager.aux-services
  mapreduce_shuffle
 

 
 
  yarn.resourcemanager.hostname
  hadoop103
 

 
 
 yarn.nodemanager.env-whitelist
JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO
NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP
RED_HOME

 


    yarn.log-aggregation-enable
    true


   
    yarn.log.server.url   
    http://hadoop102:19888/jobhistory/logs



    yarn.log-aggregation.retain-seconds
    604800

--- hdfs-site.xml






  dfs.namenode.http-address
  hadoop102:9870
 


 
  dfs.namenode.secondary.http-address
  hadoop104:9868
 

---mapred-site.xml





 
  mapreduce.framework.name
  yarn
 


 
yarn.app.mapreduce.am.env
    HADOOP_MAPRED_HOME=/opt/moudle/hadoop-3.1.3


    mapreduce.map.env
    HADOOP_MAPRED_HOME=/opt/moudle/hadoop-3.1.3


    mapreduce.reduce.env
    HADOOP_MAPRED_HOME=/opt/moudle/hadoop-3.1.3



    mapreduce.jobhistory.address
    hadoop102:10020

 


    mapreduce.jobhistory.webapp.address
    hadoop102:19888

--配置workers

hadoop102
hadoop103
hadoop104

以上配置文件要根据自己的IP的主机名适当修改。

初始化:Hdfs namenode -format

hadoop安装集群搭建_第10张图片

 如果没报错就是执行成功了。(故障处理:先停进程,删除data和logs,再格式化,最后起进程即可, --注意如果报错要查看配置文件是不是配置错了,修改完配置文件之后要把 data  和logs这两个文件夹删除之后再次初始化)

之后会出现两个文件夹:

hadoop安装集群搭建_第11张图片

 启动集群:hadoop102  sbin/start-dfs.sh  sbin/stop-dfs.sh

hadoop fs -mkdir /wcinput  hdfs上创建文件夹

hadoop fs -put wcinput/word.txt /wcinput  上传本地文件到hdfs上面

本地上传的文件的存储路径就在这个位置:

/opt/moudle/hadoop-3.1.3/data/dfs/data/current/BP-743871107-192.168.220.131-1682467906068/current/finalized/subdir0/subdir0

配置历史服务器:修改mapred-site 文件,文件同步,生效

    mapreduce.jobhistory.address

    hadoop102:10020

    mapreduce.jobhistory.webapp.address

    hadoop102:19888

启动历史服务器:bin/mapred --daemon start historyserver  然后jps  查看

hadoop fs -mkdir /input  在hdfs上面创建文件夹

hadoop fs -put wcinput/word.txt  /input  上传文件到指定的hdfs目录,注意要在

/opt/moudle/hadoop-3.1.3  下面执行命令

执行命令   输出文件夹不能存在,输入的要有。

配置日志聚集功能:

编辑yarn-site.xml

添加: 

    yarn.log-aggregation-enable

    true

  

    yarn.log.server.url  

    http://hadoop102:19888/jobhistory/logs

    yarn.log-aggregation.retain-seconds

    604800

分发文件—

先停止相关服务:单节点停止历史服务器

bin/mapred --daemon stop historyserver

sbin/stop-yarn.sh

再起来即可:

sbin/start-yarn.sh

bin/mapred --daemon start historyserver

再去执行以下:

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /wcinput /wcoutput3

整体启动停止hdfs

Start-dfs.sh/stop-dfs.sh

整体启动停止yarn

Start-yarn.sh stop-yarn.sh

各个组件逐一启动:

分别启动hdfs

Hdfs –daemon start/stop namenode/datanode/secondarynamenode

启动停止yarn

Yarn –daemon start/stop resourcemanager/nodemanager

编写脚本停止启动:myhadoop.sh

#!/bin/bash

if [ $# -lt 1 ]

then

echo "No Args Input..."

exit ;

fi

case $1 in

"start")

echo " =================== 启动 hadoop 集群 ==================="

echo " --------------- 启动 hdfs ---------------"

ssh hadoop002 "/opt/moudle/hadoop-3.1.3/sbin/start-dfs.sh"

echo " --------------- 启动 yarn ---------------"

ssh hadoop003 "/opt/moudle/hadoop-3.1.3/sbin/start-yarn.sh"

echo " --------------- 启动 historyserver ---------------"

ssh hadoop002 "/opt/moudle/hadoop-3.1.3/bin/mapred --daemon start historyserver"

;;

"stop")

echo " =================== 关闭 hadoop 集群 ==================="

echo " --------------- 关闭 historyserver ---------------"

ssh hadoop002 "/opt/moudle/hadoop-3.1.3/bin/mapred --daemon stop historyserver"

echo " --------------- 关闭 yarn ---------------"

ssh hadoop003 "/opt/moudle/hadoop-3.1.3/sbin/stop-yarn.sh"

echo " --------------- 关闭 hdfs ---------------"

ssh hadoop002 "/opt/moudle/hadoop-3.1.3/sbin/stop-dfs.sh"

;;

*)

echo "Input Args Error..."

;;

Esac

赋予权限:Chmod 777 myhadoop.sh

执行:myhadoop.sh stop 

执行可能会报一个错:在start-dfs.sh  stop-dfs.sh添加如下脚本即可:

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

记得分发,

再次执行myhadoop.sh stop

全部关闭了。

通过jps挨个查看。

hadoop安装集群搭建_第12张图片

Bin下面建立 jpsall

#!/bin/bash

for host in hadoop102 hadoop103 hadoop104

do

echo =============== $host ===============

ssh $host jps

done

chmod 777 jpsall

直接常看所有的进程。

关闭集群的顺序:

Hadoop 002 中:bin/mapred --daemon stop historyserver

3中:sbin/stop-yarn.sh

2中:sbin/stop-dfs.sh

注意要在:/opt/moudle/hadoop-3.1.3  下面

关闭后再查看即可。

安装问题记录:

问题1:

yum 不能用的时候记得先挂载:先挂载再去执行即可。只读文件必须先修改权限再去编辑。

mount -t iso9660 -o,loop /dev/sr0 /mnt

yum list all

vi /etc/fstab

yum install vim

问题2:当执行文件分发的时候个别主机无法连接,最有可能是:  先看配置文件主机名称地址有没有配置错误,地址错误之后改回来,然后删除 4中的 .Ssh文件下的 rf-rm knows_hosts文件,因为里面有之前的密钥信息,必须删除,之后再把4的密钥给1发一次就可以了。

问题3:

安装hodoop的时候所有命令失效是因为配置文件的时候出现错误导致的,解决办法:

执行:

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

然后找到错误的配置文件修改回来,source /etc/profile 执行即可。

问题4:ifconfig没有地址出现

hadoop安装集群搭建_第13张图片

问题5:注意主机名不能有下划线,英文加数字即可。

问题6:yarn地址不能访问? 原因是起节点的时候没有在指定的主机上起来。

问题7:无法通过主机名去打开网页,原因是本机电脑没有配置

C:\Windows\System32\drivers\etc  可以通过napad++强制修改,即可打开网页。

 

 

你可能感兴趣的:(大数据,大数据)