Hadoop集群安装

Hadoop集群安装

 
集群规划
 
服务器 hadoop101
服务器 hadoop102
服务器 hadoop103
HDFS
NameNode
DataNode
DataNode
DataNode
SecondaryNameNode
Yarn
NodeManager
Resourcemanager
NodeManager
NodeManager
 
 
1. 虚拟机环境准备
 
  • 克隆虚拟机                                                      
  • 修改克隆虚拟机的静态IP
  • 修改主机名
  • 关闭防火墙
  • 创建stan用户
  • 配置stan用户具有root权限
  • 所有节点 的/opt目录下创建文件夹
// 创建目录
[stan@hadoop101 opt]$ sudo mkdir module
[stan@hadoop101 opt]$ sudo mkdir software

// 修改所有者和所有者组
[stan@hadoop101 opt]$ sudo chown stan:stan module/ software/
 
 

2.下载tar包

 
 
3. 使用Xshell的sftp工具传输文件
 
// 首先使用Xshell打开一个本地命令行
[c:\~]$ sftp 192.168.81.101

// 然后将文件拖拽进入命令行窗口即可传输
 
4. 软件安装
 
  • JDK安装
1)卸载现有JDK
// 查询是否安装Java软件
[stan@hadoop101 software]$ rpm -qa | grep java

// 卸载该JDK, --nodeps是忽略包依赖删除
[stan@hadoop101 software]$ sudo rpm -e --nodeps 所有列出的包

// 再次检查是否删除干净
[stan@hadoop101 software]$ rpm -qa | grep java
 
 
 
2)将jar包解压到/opt/module目录下
[stan@hadoop101 software]$ tar -zxvf jdk-8u231-linux-x64.tar.gz -C /opt/module/

 

3)配置JDK环境变量
// 进入jdk目录
[stan@hadoop101 software]$ cd /opt/module/jdk1.8.0_231/

// 查看绝对路径
[stan@hadoop101 jdk1.8.0_231]$ pwd
/opt/module/jdk1.8.0_231

// 编辑/etc/profile文件
[stan@hadoop101 jdk1.8.0_231]$ sudo vim /etc/profile

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

// 让修改后的配置文件生效
 [stan@hadoop101 jdk1.8.0_231]$ source /etc/profile

// 测试是否配置成功
[stan@hadoop101 jdk1.8.0_231]$ java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)

 

  • Hadoop安装
1)将jar包解压到/opt/module目录下
[stan@hadoop101 module]$ tar -zxvf hadoop-2.7.7.tar.gz -C /opt/module/

 

2)配置Hadoop环境变量
// 进入hadoop目录
[stan@hadoop101 module]$ cd hadoop-2.7.7/

// 查看绝对路径
[stan@hadoop101 hadoop-2.7.7]$ pwd
/opt/module/hadoop-2.7.7

// 编辑/etc/profile文件
[stan@hadoop101 hadoop-2.7.7]$ sudo vim /etc/profile

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

// 让修改后的配置文件生效
[stan@hadoop101 hadoop-2.7.7]$ source /etc/profile

// 测试是否配置成功
[stan@hadoop101 ~]$ hadoop version
Hadoop 2.7.7
    ...

 

3)编写集群分发脚本xsync
// 进入用户目录 ( /home/stan )
[stan@hadoop101 module]$ cd

// 为脚本创建目录/home/stan/bin
[stan@hadoop101 ~]$ mkdir bin
[stan@hadoop101 ~]$ cd bin

// 编写xsync
[stan@hadoop101 bin]$ vim 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 循环, hadoop102 -> hadoop103,本机不用分发
for((host=102; host<104; host++)); do
        echo ------------------- hadoop$host --------------
        rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done
-----------------------------------------------------------

# 修改脚本权限
[stan@hadoop101 bin]$ chmod 777 xsync

# ~目录下的文件无需配置环境变量就可以在任意目录使用

 

5. 集群的配置与分发
 
1)修改8个配置文件
参考第三章
 
2)配置ssh远程登陆(免密码)
需要在 NameNode ResourceManager 节点上都执行一次
# 进入/home/stan目录
[stan@hadoop101 hadoop]$ cd

# 使用一次ssh登陆
[stan@hadoop101 ~]$ ssh hadoop102

# 查看隐藏文件
[stan@hadoop101 ~]$ ls -al
    ...
drwx------.  2 stan stan   25 2月   5 00:09 .ssh
    ...

# 进入.ssh目录
[stan@hadoop101 ~]$ cd .ssh/

# 使用以下命令生成公钥和私钥
# 连续敲击三次回车,完成生成
[stan@hadoop101 .ssh]$ ssh-keygen -t rsa
[stan@hadoop101 .ssh]$ ll
总用量 12
-rw-------. 1 stan stan 1675 2月   5 00:12 id_rsa
-rw-r--r--. 1 stan stan  396 2月   5 00:12 id_rsa.pub

# 分发,包括本机
[stan@hadoop101 .ssh]$ ssh-copy-id hadoop101
[stan@hadoop101 .ssh]$ ssh-copy-id hadoop102
[stan@hadoop101 .ssh]$ ssh-copy-id hadoop103

 

3)分发文件
// 分发JDK和Hadoop目录到其他节点 (两种)
// 1.使用xsync脚本分发
[stan@hadoop101 ~]$ xsync jdk1.8.0_231/

// 2.使用scp命令分发
[stan@hadoop101 ~]$ scp -r jdk1.8.0_231/ stan@hadoop102:/opt/module
[stan@hadoop101 ~]$ scp -r jdk1.8.0_231/ stan@hadoop103:/opt/module

// 分发/etc/profile到对方的root用户
[stan@hadoop101 ~]$ sudo scp /etc/profile root@hadoop102:/etc/profile
[stan@hadoop101 ~]$ sudo scp /etc/profile root@hadoop103:/etc/profile

// 使各个节点的配置文件生效
[stan@hadoop102 ~]$ source /etc/profile
[stan@hadoop103 ~]$ source /etc/profile

// 在各个节点上测试java和hadoop命令
// 成功后在主节点上格式化NameNode
[stan@hadoop101 module]$ hdfs namenode -format
    ...
20/02/05 01:18:17 INFO common.Storage: Storage directory /opt/module/hadoop-2.7.7/data/tmp/dfs/name has been successfully formatted.
    ...

 

4)集群的启动与关闭
// 格式化成功后,启动集群
// NameNode上启动Hadoop集群
[stan@hadoop101 module]$ start-dfs.sh

// ResourceManager节点上启动Yarn集群
[stan@hadoop102 opt]$ start-yarn.sh

// 关闭集群
ResourceManager: stop-yarn.sh
NameNode: stop-dfs.sh

// 查看进程
[stan@hadoop102 opt]$ jps

 

6. 使用Web UI界面查看集群信息
 
// Web查看Hadoop集群端口
http://hadoop101:50070/
 
 
  • 在Windows上查看Linux界面
// 修改Windows的hosts文件
C:\Windows\System32\drivers\etc\hosts

# 数据仓库IP
192.168.81.101    hadoop101
192.168.81.102    hadoop102
192.168.81.103    hadoop103

// 在Windows浏览器上访问集群Hadoop节点和端口

 

7. NodeManager正常关闭报错
 
报错:nodemanager did not stop gracefully after 5 seconds: killing with kill -9

# 查看hadoop-daemon.sh脚本
[stan@hadoop101 hadoop-2.7.7]$ vim sbin/hadoop-daemon.sh
    ...
if [ "$HADOOP_PID_DIR" = "" ]; then
  HADOOP_PID_DIR=/tmp
fi
    ...

# pid是保存了namenode和datanode进程的pid,关闭进程时就要从这个文件中读取pid
[stan@hadoop101 tmp]$ cat hadoop-stan-namenode.pid
18557
[stan@hadoop101 tmp]$ cat hadoop-stan-datanode.pid
18733

# HADOOP_PID_DIR 变量保存的是pid文件的存储路径。默认存储在/tmp目录中
# /tmp是临时目录,系统会定时清理该目录中的文件,pid长时间不被访问,会被清理掉
# 创建pid目录
[stan@hadoop101 hadoop-2.7.7]$ mkdir pid

# 修改hadoop-daemon.sh
[stan@hadoop101 hadoop-2.7.7]$ vim sbin/hadoop-daemon.sh
HADOOP_PID_DIR=/opt/module/hadoop-2.7.7/pid

# 修改yarn-daemon.sh
[stan@hadoop101 hadoop-2.7.7]$ vim sbin/yarn-daemon.sh
YARN_PID_DIR=/opt/module/hadoop-2.7.7/pid

# 开启hdfs查看pid目录
[stan@hadoop101 hadoop-2.7.7]$ start-dfs.sh
[stan@hadoop101 hadoop-2.7.7]$ ls pid/
hadoop-stan-datanode.pid  hadoop-stan-namenode.pid

# 分发hadoop-daemon.sh和yarn-daemon.sh到集群
[stan@hadoop101 sbin]$ xsync hadoop-daemon.sh
[stan@hadoop101 sbin]$ xsync yarn-daemon.sh

# 重启hadoop让集群配置生效

 

 
 
 
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值