实时数仓学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、aliyun服务器配置

        1、阿里云买服务器,学习使用抢占式实例即可。

                选择地址,cpu核数2核、内存大小8g、实例数量3

                选择系统centOS 7.5,盘大小。

                带宽拉满,这个是按流量计费的。

                密码选择自定义,实例名称和主机名自定义。

        2、安装一些工具包

#安装工具包
yum install -y net-tools
yum install -y epel-release
yum install -y vim 
#关闭防火墙,便于机器之间访问
systemctl stop firewalld
systemctl disable firewalld.service
#添加用户
useradd hz
passwd hz
#设置用户权限
vim /etc/sudoers
hz    ALL=(ALL)       NOPASSWD: ALL
#创建目录
mkdir /opt/software
#设置目录权限
chown hz:hz /opt/software

        3、机器映射

        

#阿里云服务器
sudo vim /etc/hosts
#将地址和对应的机器名写进去,机器内部用私有地址即可
hadoop102 192.168.0.100
...

#本地电脑也需要配置对应的映射,方便后续hadoop地址访问,本地机器访问需要公网地址
C:\Windows\System32\drivers\etc\hosts

         4、机器间免密配置

#生成密钥对
ssh-keygen –t rsa –P '' 
#把公钥追加到授权的key里面去
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
#修改权限
chmod 600 ~/.ssh/authorized_keys 
#用root用户修改ssh配置文件
vi /etc/ssh/sshd_config 
把文件中的下面几条信息的注释去掉:
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
#重启服务
service sshd restart 
#把公钥复制到其他机器上
scp ~/.ssh/id_rsa.pub 地址:~/
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm -rf ~/id_rsa.pub 
#以上四部一步完成
ssh-copy-id -i ~/.ssh/id_rsa.pub 地址

        5、一些脚本

                1、集群分发脚本

cd /home/hz/bin 
vim 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

==================分割线====================
#权限
chmod +x xsync 

                2、xcall集群端口查询

cd /home/hz/bin
vim xcall.sh
=========================分割线=======================
#! /bin/bash
 
for i in hadoop102 hadoop103 hadoop104
do
    echo --------- $i ----------
    ssh $i "$*"
done

=========================分割线=======================
#权限设置
chmod 777 xcall.sh

#启动脚本
xcall.sh jps

二、JDK安装

1.引入jar包

2、解压并配置环境变量

tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
#改名
mv jdk1.8.0_212/ jdk

#配置环境变量
sudo vim /etc/profile.d/my_env.sh

================添加====================
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk
export PATH=$PATH:$JAVA_HOME/bin
========================================

#让环境变量生效
source /etc/profile.d/my_env.sh

#测试
java -version

#分发jdk
xsync /opt/module/jdk

#分发环境变量
sudo /home/hz/bin/xsync /etc/profile.d/my_env.sh

#在其他两台机器上也需要执行source命令

三、Hadoop安装及配置

1、hadoop102上安装hadoop

Hadoop 下载地址:Index of /dist/hadoop/common/hadoop-3.1.3

1)上传包到hadoop102上

2)解压

        tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/

        mv hadoop3.1.3 hadoop

3) 将hadoop添加到环境变量

       

#打开my_env.sh文件
sudo vim /etc/profile.d/my_env.sh

=======================================分割线============================
#HADOOP_HOME 
export HADOOP_HOME=/opt/module/hadoop
export PATH=$PATH:$HADOOP_HOME/bin 
export PATH=$PATH:$HADOOP_HOME/sbin
=======================================分割线============================

#是环境变量生效
source /etc/profile

#检查
hadoop version 

4) hadoop不能使用,重启虚拟机

sudo reboot

5) 重要目录
(1)bin 目录:存放对 Hadoop 相关服务(hdfs,yarn,mapred)进行操作的脚本
(2)etc 目录:Hadoop 的配置文件目录,存放 Hadoop 的配置文件
(3)lib 目录:存放 Hadoop 的本地库(对数据进行压缩解压缩功能)
(4)sbin 目录:存放启动或停止 Hadoop 相关服务的脚本
(5)share 目录:存放 Hadoop 的依赖 jar 包、文档、和官方案例

2、本地运行模式(官方WordCount案例)

1)、在hadoop目录下创建一个wordCountInput文件

mkdir wordCountInput

#进入文件夹
cd wordCountInput 
# 编辑一个word.txt 文件,内容随便写一些
vim word.txt

2)、返回hadoop目录

3)、执行官方的jar包

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wordCountInput wcoutput

4)、查看结果cat wcoutput/part-r-00000

完全分布式运行模式

1)、配置集群

将hadoop分发到其他两台服务器

xsync /opt/module/hadoop

#环境变量
sudo xsync /etc/profile.d/my_env.sh 

#使环境变量生效
source /etc/profile.d/my_env.sh

2) 、参数设置

进入/opt/module/hadoop/etc/hadoop/目录下

vim core-site.xml

<configuration>
    <!-- 指定 NameNode 的地址 --> 
    <property> 
        <name>fs.defaultFS</name> 
        <value>hdfs://hadoop102:8020</value> 
    </property>
    <!-- 指定 hadoop 数据的存储目录 --> 
    <property> 
        <name>hadoop.tmp.dir</name> 
        <value>/opt/module/hadoop/data</value> 
    </property> 
 
    <!-- 配置 HDFS 网页登录使用的静态用户为 hz--> 
    <property> 
        <name>hadoop.http.staticuser.user</name> 
        <value>hz</value> 
    </property> 
</configuration>

vim hdfs-site.xml

<configuration>
    <!-- NameNode web 端访问地址--> 
    <property> 
        <name>dfs.namenode.http-address</name> 
        <value>hadoop102:9870</value> 
    </property> 

    <!-- SecondaryNameNode web 端访问地址--> 
    <property> 
        <name>dfs.namenode.secondary.http-address</name> 
        <value>hadoop104:9868</value> 
    </property>
    
    <!--NameNode的工作线程池,处理DataNode的并发心跳和客户端的并发元数据操作20*ln(clusterSize)-->
    <property>
        <name>dfs.namenode.handler.count</name>
        <value>22</value>
    </property>
</configuration>

vim yarin-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
<!-- 指定 MR 走 shuffle --> 
    <property> 
        <name>yarn.nodemanager.aux-services</name> 
        <value>mapreduce_shuffle</value> 
    </property> 
 
    <!-- 指定 ResourceManager 的地址--> 
    <property> 
        <name>yarn.resourcemanager.hostname</name> 
        <value>hadoop103</value> 
    </property> 

    <!--RM暴露AppMaster的地址,用于申请资源,释放资源-->
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>hadoop103:8030</value> 
    </property>

    <!--RM暴露给NodeManager的地址,汇报心跳、领取任务-->
    <property>
        <name>yarn.nodemanager.resource-tracker.address</name>
        <value>hadoop103:8031</value> 
    </property>

    <property>
        <name>yarn.nodemanager.memory-mb</name>
        <value>6GB</value>
    </property>

    <property>
        <name>yarn.nodemanager.cpu-vcores</name>
        <value>1</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>

    <!-- 开启日志聚集功能 --> 
    <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> 
    
    <!-- 设置日志保留时间为 7 天 --> 
    <property> 
        <name>yarn.log-aggregation.retain-seconds</name> 
        <value>604800</value> 
    </property> 
</configuration>

vim mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    
    <!--历史服务器端地址-->
    <property> 
        <name>mapreduce.jobhistory.address</name> 
        <value>hadoop102:10020</value> 
    </property> 
    
    <!-- 历史服务器 web 端地址 --> 
    <property> 
        <name>mapreduce.jobhistory.webapp.address</name> 
        <value>hadoop102:19888</value> 
    </property>
</configuration>

配置workers

cd $HADOOP_HOME/etc/hadoop

在workers里面添加下面三台机器,注意不要有空格和换行
hadoop102
hadoop103
hadoop104

============================分割线===============================
分发配置
xsync /opt/module/hadoop/etc/hadoop

启动服务

#初始化namenode
如果集群是第一次启动,需要在 hadoop102 节点格式化 NameNode
(注意:格式化 NameNode,会产生新的集群 id,
导致 NameNode 和 DataNode 的集群 id 不一致,
集群找不到已往数据。如果集群在运行过程中报错,
需要重新格式化 NameNode 的话,一定要先停止 namenode 和 datanode 进程,
并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。)
hdfs namenode -format

#hadoop102上启动namenode和datanode
cd /opt/module/hadoop/sbin
start-dfs.sh

#hadoop103上启动ResourceManager和NodeManager
cd /opt/module/hadoop/sbin
start-yarn.sh

#启动历史服务器
mapred --daemon start historyserver

启动完成后情况

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值