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

CDH环境搭建

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CDH环境搭建

CDH是Apache Hadoop和相关项目的最完整,经过测试的流行发行版。 CDH提供了Hadoop的核心元素(可扩展的存储和分布式计算 ),以及基于Web的用户界面和重要的企业功能。

安装虚拟机CentOs

我自己安装的是CentOs7的版本,下面资源里有镜像文件,还有VM虚拟机以及其他可能对你有用的文件。

链接:https://pan.baidu.com/s/1rXpV1UyuL-Im5gSFiAOdUg
提取码:j20w

相关配置 网络配置

这一步的话主要就是在同一局域网内搭建好三台虚拟机,直接复制刚开始安装的一台就行。在虚拟机设置部分注意将网络连接选择NAT模式。
同时,在虚拟机网络设置部分也可以对VMnet8的子网进行设置,我使用的是192.168.169.0网段。

当然直接使用默认的就行,开机后查看ip即可。

ifconfig
时间同步

集群中的机器万一时间不同步的话会给我们的任务带来一些问题,因此需要对集群中所有的机器配置时间同步服务。

yum install -y ntp
systemctl start ntpd.service

开启同步服务后查看一下是否是同步状态。

ntpstat
修改主机名

这一步的配置可以让集群中的机器互相通信。

vi /etc/hosts
# 文件内容
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 节点1名称
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.169.x 节点1名称
192.168.169.x 节点2名称
192.168.169.x 节点3名称

设置完成之后相互之间进行ping,测试是否能相互通信

ping 节点名称
关闭SElinux

SELinux 定义了每个人对系统上的应用、进程和文件的访问权限。它利用安全策略(一组告知 SELinux 哪些能访问,哪些不能访问的规则)来强制执行策略所允许的访问。

CDH需要关闭它,因为开启的话对文件的管理会造成影响。修改配置文件将SELINUX设置为disable。

vi /etc/selinux/config


修改完成后通过下面命令查看状态。

getenforce
关闭防火墙

关闭防火墙并关闭防火墙开机自启动。

systemctl stop iptables.service
systemctl disable iptables.service
免密登录

配置好免密登录后主机间可以直接通过su+主机名相互登录。这里主要是通过rsa产生公私钥,公钥发送给其他主机,私钥自己留着。验证时用自己的私钥加密身份信息,对方通过公钥解密验证,成功即可登录。

# 生成公私钥
ssh-keygen -t rsa
# 将公钥发给其他主机
ssh-copy-id 节点1名称
ssh-copy-id 节点2名称
ssh-copy-id 节点3名称
JAVA安装

在安装前查看是否有残留的jdk。

rpm -qa | grep java
# 有的话执行下面命令删除
rpm -e -nodeps xx 

文章开头部分的资源链接有jdk包,通过xshell上传后进行解压。解压后修改配置文件。

tar zxvf jdk包名称 -C /usr/java
# 修改配置文件
vi /etc/profile
# 文件结尾处加上
# Java Home
export JAVA_HOME=/usr/java/jdk名称
export PATH=$PATH:$JAVA_HOME/bin
# 配置完查看java
java -version
CDH本地仓库搭建

由于CDH目前闭源,所以下载CDH安装包会出现一些问题。经过很久的查找,终于找到了合适的解决方案。
(1)在/etc/yum.repos.d/目录下建个名为cloudera-cdh5.repo的文件。
(2)修改文件内容如下,费了很大的劲儿才找到的源。这样的话yum就可以使用cloudera的源了。

[cloudera-cdh5]
# Packages for Cloudera's Distribution for Hadoop,Version 5,on RedHat or CentOS 6 x86_64name=cloudera's Distribution for Hadoop,Version 5
baseurl=https://ro-bucharest-repo.bigstepcloud.com/cloudera-repos/cdh5/redhat/6/x86_64/cdh/5/
gpgkey =https://ro-bucharest-repo.bigstepcloud.com/cloudera-repos/cdh5/redhat/6/x86_64/cdh/RPM-GPG-KEY-cloudera
gpgcheck = 1

(3)下载两个工具用于后面本地源的搭建。

yum install -y yum-utils createrepo

(4)下载CDH文件到本地。(非常耗时)

reposync -r cloudera-cdh5

(5)安装https服务创建http的目录,并将CDH文件传到目录下。同时修改/etc/yum.repos.d/cloudera-cdh5.repo文件中的baserurl=http://节点1名称/cdh5。

# 安装https
yum install -y httpd
systemctl start httpd.service
systemctl enable httpd.service
# 创建目录并拷贝
mkdir -p /var/www/html/cdh5
cp -r cloudera-cdh5/RPM /var/www/html/cdh5/
cd /var/www/html/cdh5/
# 提供索引供外部使用
createrepo .
Zookeeper安装

Hadoop依赖于Zookeeper,所以先安装Zookeeper。

# 下载 zookeeper
yum install -y zookeeper zookeeper-server 
# 指定id,只能为数字。我的配置中node-1为1,node-2为2,node-3为3
service zookeeper-server init --myid==1
# 修改配置文件
vi /etc/zookeeper/conf/zoo.cfg
# 配置文件结尾加上以下内容
server.1=节点1名称:2888:3888
server.2=节点2名称:2888:3888
server.3=节点3名称:2888:3888

上面的zoo.cfg文件中,2888代表与集群中Leader交换信息的端口号,3888代表假设集群中的Leader服务器挂掉后需要一个端口来进行选举,这个端口是用来执行选举时服务器相互通信的端口。

# 开启 zookeeper
service zookeeper-server start
# 启动成功后查看集群状态
zookeeper-server status


会发现node-1是leader节点,同时其他两个是follower节点。

Hadoop安装

主节点为node-1,从节点为node-2和node-3。

# 安装 hadooop
# 主节点
yum -y install hadoop hadoop-yarn-resourcemanager hadoop-yarn-nodemanager hadoop-hdfs-secondarynamenode hadoop-hdfs-namenode hadoop-hdfs-datanode hadoop-mapreduce hadoop-mapreduce-historyserver hadoop-client
# 从节点
yum -y install hadoop hadoop-yarn-nodemanager hadoop-hdfs-datanode hadoop-mapreduce hadoop-client
# 配置 hdfs
# 进入配置文件夹,拷贝 conf(保留原始文件)
cd /etc/hadoop
cp -r conf.empty conf.itcast
# 创建软连接并指定优先级
alternatives --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.itcast 50
# 确定关联
alternatives --set hadoop-conf /etc/hadoop/conf.itcast
# 查看 hadoop-conf 的关联关系
alternatives --display hadoop-conf
# 进入 conf.itcast并修改配置文件
cd conf.itcast
vi core-site.xml
# 添加内容

    fs.defaultFS
    hdfs://node-1:8020


vi hdfs-site.xml
# 添加内容

    dfs.namenode.name.dir
    file:///var/lib/hadoop-hdfs/cache/hdfs/dfs/name


    dfs.datanode.data.dir
    file:///var/lib/hadoop-hdfs/cache/hdfs/dfs/data


    dfs.permissions.superusergroup
    hadoop


    dfs.namenode.http-address
    node-1:50070


    dfs.permissions.enabled
    false

# 创建所需要的目录
mkdir -p /var/lib/hadoop-hdfs/cache/hdfs/dfs/name
mkdir -p /var/lib/hadoop-hdfs/cache/hdfs/dfs/data
# 指定权限
chown -R hdfs:hdfs /var/lib/hadoop-hdfs/cache/hdfs/dfs/name
chown -R hdfs:hdfs /var/lib/hadoop-hdfs/cache/hdfs/dfs/data
chmod 700 /var/lib/hadoop-hdfs/cache/hdfs/dfs/name
chmod 700 /var/lib/hadoop-hdfs/cache/hdfs/dfs/data
# 主节点格式化 namenode
sudo -u hdfs hdfs namenode -format
# 主节点启动
service hadoop-hdfs-namenode start
service hadoop-hdfs-secondarynamenode start
# 从节点启动
service hadoop-hdfs-datanode start
# 修改和配置 Yarn 和 Mapreduce
vi /etc/hadoop/conf.itcast/mapred-site.xml

    mapreduce.framework.name
    yarn


    mapreduce.jobhistory.address
    node-1:10020


    mapreduce.jobhistory.webapp.address
    node-1:19888


    hadoop.proxyuser.mapred.groups
    *


    hadoop.proxyuser.mapred.hosts
    *


    yarn.app.mapreduce.am.staging-dir
    /user


vi /etc/hadoop/conf.itcast/yarn-site.xml

    yarn.resourcemanager.hostname
    node-1


    yarn.application.classpath
    
        $HADOOP_CONF_DIR,
        $HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,
        $HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,
        $HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*,
        $HADOOP_YARN_HOME/*,$HADOOP_YARN_HOME/lib/*
    


    yarn.nodemanager.aux-services
    mapreduce_shuffle


    yarn.nodemanager.local-dirs
    file:///var/lib/hadoop-yarn/cache/${user.name}/nm-local-dir


    yarn.nodemanager.log-dirs
    file:///var/log/hadoop-yarn/containers


    yarn.log.aggregation-enable
    true


    yarn.nodemanager.remote-app-log-dir
    hdfs:///var/log/hadoop-yarn/apps


# 创建 Yarn 所需的数据目录
mkdir -p /var/lib/hadoop-yarn/cache
mkdir -p /var/log/hadoop-yarn/containers
mkdir -p /var/log/hadoop-yarn/apps
# 赋予 Yarn 用户权限
chown -R yarn:yarn /var/lib/hadoop-yarn/cache /var/log/hadoop-yarn/containers /var/log/hadoop-yarn/apps

# 为 MapReduce 准备 HDFS 上的目录
sudo -u hdfs hadoop fs -mkdir /tmp
sudo -u hdfs hadoop fs -chmod -R 1777 /tmp
sudo -u hdfs hadoop fs -mkdir -p /user/history
sudo -u hdfs hadoop fs -chmod -R 1777 /user/history
sudo -u hdfs hadoop fs -chown mapred:hadoop /user/history

sudo -u hdfs hadoop fs -mkdir /user/$USER
sudo -u hdfs hadoop fs -chown $USER /user/$USER

# 启动 Yarn
service hadoop-yarn-resourcemanager start
service hadoop-mapreduce-historyserver start

service hadoop-yarn-nodemanager start
MySQL安装

和Hive配合使用。

# 下载 yum 源配置
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
# 安装 mysql
yum install -y mysql-server
# 启动服务
systemctl start mysqld.service
# 关闭强密码验证,方便自己用。实际工作中不用
vi /etc/my.cnf
# 最后一行加上
validate_password=OFF
# 重启 mysql
systemctl restart mysqld.service
# 设置密码
mysql_secure_installation
Hive安装

Hive 需要使用 MySQL 作为元数据库, 所以需要在 MySQL 为 Hive 创建用户, 创建对应的表。
(1)安装 Hive 软件包

yum install -y hive hive-metastore hive-server2
# 给 hive 一个 mysql 的 jdbc 包, hive 就能使用 mysql 作为元数据库
yum install -y mysql-connector-java
# 创建软连接到 hive 下
ln -s /usr/share/java/mysql-connector-java.jar  /usr/lib/hive/lib/mysql-connector-java.jar

(2)在 MySQL 中增加 Hive 用户

# 登录数据库
mysql -u root -p
# 为 hive 创建 metastore 数据库
CREATE DATAbase metastore;
USE metastore;
# 创建 hive 用户,@‘%’表示在所有位置可以登录,本机登录的话是@‘localhost’
CREATE USER 'hive'@'%' IDENTIFIED BY 'hive';
# 赋权
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'hive'@'%';
GRANT ALL PRIVILEGES ON metastore.* TO 'hive'@'%';
FLUSH PRIVILEGES;

(3)配置 Hive

vi /etc/hive/conf/hive-site.xml
# 配置文件


    javax.jdo.option.ConnectionURL
    jdbc:mysql://node-1/metastore


    javax.jdo.option.ConnectionDriverName
    com.mysql.jdbc.Driver


    javax.jdo.option.ConnectionUserName
    hive


    javax.jdo.option.ConnectionPassword
    hive


    datanucleus.autoCreateSchema
    false


    datanucleus.fixedDatastore
    true


    datanucleus.autoStartMechanism
    SchemaTable


    hive.metastore.uris
    thrift://node-1:9083


    hive.metastore.schema.verification
    true


    hive.support.concurrency
    Enable Hive's Table Lock Manager Service
    true


    hive.support.concurrency
    true


    hive.zookeeper.quorum
    node-1

(4)初始化 Hive 在 MySQL 中的表结构

# 为 hive 初始化数据库, 创建必备的表和模式
/usr/lib/hive/bin/schematool -dbType mysql -initSchema -passWord hive -userName hive -url jdbc:my sql://node-1/metastore

(5)启动 Hive

service hive-metastore start
service hive-server2 start
# 通过 beeline 查看连接状态 
beeline
!connect jdbc:hive2://node-1:10000 username password org.apache.hive.jdbc.HiveDriver

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

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

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