Hadoop运行环境搭建

1395-董同学

发表文章数:8

热门标签

,
首页 » 大数据 » 正文

一、虚拟机环境准备

  1. 单台虚拟机:内存4G,硬盘50G,安装必要环境
sudo yum install -y epel-release
sudo yum install -y psmisc nc net-tools rsync vim lrzsz ntp libzstd openssl-static tree iotop git
  1. 修改克隆虚拟机的静态IP
sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33

改成

BOOTPROTO=static
IPADDR=192.168.1.101
GATEWAY=192.168.1.2
DNS1=192.168.1.2

4.查看Linux虚拟机的虚拟网络编辑器,编辑->虚拟网络编辑器->VMnet8
Hadoop运行环境搭建

  1. 查看Windows系统适配器VMware Network Adapter VMnet8的IP地址
    Hadoop运行环境搭建
  2. 修改主机名
    (1)修改主机名称
sudo hostnamectl --static set-hostname hadoop101

(2)配置主机名称映射,打开/etc/hosts

sudo vim /etc/hosts

添加如下内容

192.168.1.100 hadoop100
192.168.1.101 hadoop101
192.168.1.102 hadoop102
192.168.1.103 hadoop103
192.168.1.104 hadoop104
192.168.1.105 hadoop105
192.168.1.106 hadoop106
192.168.1.107 hadoop107
192.168.1.108 hadoop108

(3)修改window的主机映射文件(hosts文件)
(a)进入C:/Windows/System32/drivers/etc路径
(b)打开hosts文件并添加如下内容

192.168.1.100 hadoop100
192.168.1.101 hadoop101
192.168.1.102 hadoop102
192.168.1.103 hadoop103
192.168.1.104 hadoop104
192.168.1.105 hadoop105
192.168.1.106 hadoop106
192.168.1.107 hadoop107
192.168.1.108 hadoop108

7.关闭防火墙

sudo systemctl stop firewalld
sudo systemctl disabled firedwalld
  1. 创建用户
sudo useradd oodyp
sudo passwd 123456
  1. 重启虚拟机
reboot
  1. 配置oodyp用户具有root权限
visudo

修改/etc/sudoers文件,找到下面一行(91行),在root下面添加一行,如下所示:

输入 (:set nu) 出现行号方便快速定位

## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
oodyp   ALL=(ALL)     NOPASSWD:ALL
  1. 在/opt目录下创建文件夹
    (1)在/opt目录下创建module、software文件夹
sudo mkdir module
sudo mkdir software
(2)修改module、software文件夹的所有者
sudo chown oodyp:oodyp /opt/module /opt/software
(3)切换至oodyp用户
su - oodyp

su 用户名称 (功能描述:切换用户,只能获得用户的执行权限,不能获得环境变量)
su – 用户名称 (功能描述:切换到用户并获得该用户的环境变量及执行权限)#

二、安装JDK和Hadoop

1.卸载现有JDK

rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps
  1. 将JDK和Hadoop导入到opt目录下面的software文件夹下面
    进入到 /opt/software目录下,点击取消按钮会出现一个新的窗口,直接把要上传的文件拖到这个窗口就可以上传文件到对应目录。
    Hadoop运行环境搭建
  2. 进入到/opt/software目录下查看是否上传成功
cd /opt/software 
ll

Hadoop运行环境搭建
4. 解压JDK和hadoop到/opt/module目录下

tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
  1. 添加到环境变量
    打开/etc/profile.d/my_env.sh文件
#JAVA_HOME 
export JAVA_HOME=/opt/module/jdk1.8.0_212 
export PATH=$PATH:$JAVA_HOME/bin
#HADOOP_HOME 
export HADOOP_HOME=/opt/module/hadoop-3.1.3 
export PATH=$PATH:$HADOOP_HOME/bin 
export PATH=$PATH:$HADOOP_HOME/sbin

6.让修改后的文件生效(可以使用$PATH看下有没有生效,没有在执行下面的语句)

source /etc/profile
  1. 测试是否安装成功
java -version
hadoop version
hadoop checknative 检查本地库文件,最后一个可以为false
  1. 重启(如果Hadoop命令不能用再重启)
sync (sync 指令会将存于 buffer 中的资料强制写入硬盘中)
sudo reboot

三、编写集群分发脚本xsync

  1. 在/home/oodyp/bin这个目录下存放的脚本,oodyp用户可以在系统任何地方直接执行
  2. 在/home/oodyp目录下创建xsync文件
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
  echo Not Enough Arguement!
  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
  1. 修改脚本 xsync 具有执行权限
chmod +x xsync
  1. 将脚本移动到/bin中,以便全局调用
sudo mv xsync /bin/

四、 SSH无密登录配置

  1. 免密登录原理
    Hadoop运行环境搭建
  2. 生成公钥和私钥
    hadoop102上执行命令生成公钥和私钥
ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

  1. 将公钥拷贝到要免密登录的目标机器上
ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104

这样可以使hadoop102免密登录其他机器,如果需要集群中的机器可以互相登录那么就把hadoop102的~/.ssh 文件分发给其他机器

五、集群配置

  1. 集群部署规划
    注意:NameNode和SecondaryNameNode不要安装在同一台服务器
    注意:ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。
    Hadoop运行环境搭建

  2. 配置集群
    (1).核心配置文件
    配置core-site.xml

cd $HADOOP_HOME/etc/hadoop
vim core-site.xml

文件内容如下:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:8020</value>
    </property>
    <property>
        <name>hadoop.data.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
    </property>
    <property>
        <name>hadoop.proxyuser.atguigu.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.atguigu.groups</name>
        <value>*</value>
    </property>
</configuration>

(2)HDFS配置文件
配置hdfs-site.xml

vim hdfs-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file://${hadoop.data.dir}/name</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file://${hadoop.data.dir}/data</value>
  </property>
    <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>
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop104:9868</value>
  </property>
</configuration>

(3)YARN配置文件
配置yarn-site.xml

vim yarn-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</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>
</configuration>

(4)MapReduce配置文件
配置mapred-site.xml

vim mapred-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>

(5)workers 配置文件
配置从机

   vim workers

把localhost删除,加入从机(此配置是集群启动的关键)
注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

hadoop100
hadoop101
hadoop102

  1. 在集群上分发配置好的Hadoop配置文件
xsync /opt/module/hadoop-3.1.3/etc/hadoop/
  1. 集群启动/停止方式总结
    1.各个服务组件逐一启动/停止
    (1)分别启动/停止HDFS组件
hdfs –daemon start/stop namenode/datanode/secondarynamenode

(2) 启动/停止YARN

yarn --daemon start/stop  resourcemanager/nodemanager
  1. 各个模块分开启动/停止(配置ssh是前提)常用
    (1)整体启动/停止HDFS(namenode配置在那台服务器上就在哪台服务器执行)
start-dfs.sh/stop-dfs.sh

(2) 整体启动/停止YARN(resourcemanager配置在那台服务器上就在哪台服务器执行)

start-yarn.sh/stop-yarn.sh

六 、配置历史服务器

  1. 配置mapred-site.xml

在该文件里面增加如下配置。

<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop102:10020</value>
</property>

<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop102:19888</value>
</property>
  1. 分发配置
xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml
  1. 在hadoop102启动历史服务器
启动:mapred –-daemon start historyserver
停止:mapred --daemon stop historyserver
  1. 查看历史服务器是否启动
jps
  1. 查看JobHistory
    http://hadoop102:19888/jobhistory

七、配置日志的聚集

注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryManager

  1. 配置yarn-site.xml

在该文件里面增加如下配置。

 <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property>  
        <name>yarn.log.server.url</name>  
        <value>http://hadoop102:19888/jobhistory/logs</value>  
    </property>
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
</property>
  1. 分发配置
xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml

八、集群时间同步(必须root用户)

  1. 时间服务器配置(必须root用户)
    (1)在所有节点关闭ntp服务和自启动
systemctl stop ntpd
systemctl disable ntpd

(2)修改ntp配置文件

vim /etc/ntp.conf

a)修改1(授权192.168.1.0-192.168.1.255网段上的所有机器可以从这台机器上查询和同步时间)

#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
为restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
 b)修改2(集群在局域网中,不使用其他互联网上的时间)
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 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

c)添加3(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)

server 127.127.1.0
fudge 127.127.1.0 stratum 10

(3)修改/etc/sysconfig/ntpd 文件
vim /etc/sysconfig/ntpd
增加内容如下(让硬件时间与系统时间一起同步)

SYNC_HWCLOCK=yes

(4)重新启动ntpd服务

systemctl start ntpd

(5)设置ntpd服务开机启动

systemctl enable ntpd
  1. 其他机器配置(必须root用户)
    (1)在其他机器配置10分钟与时间服务器同步一次
crontab -e

编写定时任务如下:

*/10 * * * * /usr/sbin/ntpdate hadoop102

(2)修改任意机器时间

date -s "2017-9-11 11:11:11"

(3)十分钟后查看机器是否与时间服务器同步

date

未经允许不得转载:作者:1395-董同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《Hadoop运行环境搭建》 发布于2020-11-25

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录