vim /etc/sysconfig/network-script/ifcfg-eth0
“DEVICE”:网卡对应的设备别名,如ifcfg-eth0第一块网卡;
“HWADDR”:网卡物理地址;
“BOOTPROTO”:网卡获得ip地址的方式,Static(静态 ip地址)dhcp(通过dhcp协议获取ip)bootip通过bootp协议获得的ip地址;
“IPADDR”:网卡IP地址;
“NETMASK”:网卡对应网络掩码;
“NETWORK”:网卡对应的网络地址;
“ONBOOT”:系统启动时是否设置此网络接口,设置为yes时,系统启动时激活此设备。默认设置为yes;
“DNS”:配置该网络环境下的DNS。
保存上述编辑内容,运行如下命令重启network服务。
service network restart
说明:集群中,其余机器IP地址配置方式同上。
DNS服务,目前只是在host文件中做了ip地址和主机名映射。
先在各节点配置主机名:
#永久性改变主机名,必须重启才能生效
hostnamectl --static set-hostname host1
#退出当前终端,再重新连接linux,使新的主机名生效
#如果重启未生效 参考 https://blog.csdn.net/weixin_44742962/article/details/105703118
编辑各个节点的配置文件/etc/hosts如下:
vim /etc/hosts
192.268.111.111 host1
192.268.111.112 host2
192.268.111.113 host3
……
注意:ip改为为自己集群ip
关闭大页内存(THP)
vim /etc/rc.d/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
保存退出,然后赋予rc.local文件执行权限
chmod +x /etc/rc.d/rc.local
vi /etc/security/limits.conf
最后添加
* soft nofile 1024000
* hard nofile 1024000
hive - nofile 1024000
hive - nproc 1024000
用户进程限制
vi /etc/security/limits.d/20-nproc.conf
#加大普通用户限制 也可以改为unlimited
* soft nproc 40960
root soft nproc unlimited
# 参考 https://blog.csdn.net/weixin_44742962/article/details/105790569
配置host1到其余各虚拟机的ssh免密码登录,使用如下命令生成ssh所需的公钥以及私钥。
运行如下脚本完成集群免密码登录。
vim sshScript.sh
#! /bin/bash
ssh-keygen -t rsa
ALL_CLIENTS=`cat /etc/hosts| grep "10.10.32" | awk '{print $2}'`
CLIENTS=""
for client in $ALL_CLIENTS
do
echo "=============copy-ssh-id $client============="
ssh-copy-id $client
done
注意:
(1)运维人员需要根据实际环境将上述脚本中的IP地址“10.10.32”修改为实际环境中的IP地址网段;
(2)运行该脚本过程中需要运维人员与其交互;
chmod u+x sshScript.sh
Hadoop集群的部署需要所有节点都将防火墙关闭,与此同时也要设置开机默认不启动防火墙,运行如下脚本来完成该操作
# CentOS7 则运行以下命令
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
安装openssl服务,使用如下所示的脚本。
vim opensslInstall.sh
#! /bin/bash
ALL_CLIENTS=`cat /etc/hosts| grep "10.10.32" | awk '{print $2}'`
CLIENTS=""
for client in $ALL_CLIENTS
do
echo "======yum openssl at $client ======="
ssh $client "yum -y install openssl"
done
为该脚本添加执行权限:
chmod u+x opensslInstall.sh
执行脚本:
sh opensslInstall.sh
在需要安装Amabri-Server的节点安装httpd服务,然后启动该服务并且将该服务设置为开机自启动,使用如下命令
yum -y install httpd && service httpd restart
注意:更换版本不成功,试一下删除下面两个目录
rm -rf /usr/bin/java
rm -rf /usr/bin/javac
修改vim /etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=disabled,重启机器。其余节点做一样处理。
在安装Ambari-Server的节点上安装MySQL
groupadd mysql
useradd -g mysql mysql
# 安装mysql步骤参考 https://blog.csdn.net/weixin_44742962/article/details/105792118
创建Ambari用户,使用如下命令。
mysql> CREATE USER ambari IDENTIFIED BY '123456';
# 将ambari-2.5.0.3-centos7.tar.gz
# HDP-2.6.5.0-centos7-rpm.tar.gz
# HDP-UTILS-1.1.0.21-centos7.tar.gz
# 上传到安装ambari-server节点的 /var/www/html 路径下 并解压
vim /etc/yum.repos.d/ambari.repo
#VERSION_NUMBER=2.5.0.3-7
[ambari-2.5.0.3]
name=ambari Version - ambari-2.5.0.3
#baseurl=http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.5.0.3
baseurl=http://192.268.111.111/ambari/centos7/
gpgcheck=1
#gpgkey=http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.5.0.3/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
gpgkey=http://192.268.111.111/ambari/centos7/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
vim /etc/yum.repos.d/HDP.repo
[HDP-2.6]
name=HDP-2.6
baseurl=http://192.268.111.111/HDP/centos7/2.6.5.0-292
path=/
enabled=1
gpgcheck=0
vim /etc/yum.repos.d/HDP-UTILS.repo
[HDP-UTILS-1.1.0.21]
name=HDP-UTILS-1.1.0.21
baseurl=http://192.268.111.111/HDP-UTILS-1.1.0.21-centos7/
path=/
enabled=1
gpgcheck=0
注意 1、修改对应版本和ip(ip为安装ambari-server节点ip)
2、将上面的三个repo文件分发到其余所有服务器
yum -y install ambari-server
注意:由于该环境中使用MySQL作为数据库,在设置Amabri-server服务之前需要做一下操作。
mysql> CREATE DATABASE `ambari`;
mysql> use ambari;
mysql> source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
cp mysql-connector-java-5.1.47.tar.gz /usr/share/java/
cd /usr/share/java
ln -s mysql-connector-java-5.1.47.tar.gz mysql-connector-java.jar
ambari-server setup
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MfKxIYHx-1588058022607)(C:\Users\zcah_lxl\Desktop\111.png)]
按图中所示步骤操作,ambari-server设置完成后会有“Ambari Server ‘setup’ completed successfully.”日志说明
ambari-server start
# 出现以下表示服务启动成功
# Ambari Server 'start' completed successfully.
如果启动的时候报错,请查看/var/log/ambari-server/ambari-server.log:
tail -100 /var/log/ambari-server/ambari-server.log
找到具体错误,解决之后再启动ambari服务。很多出错是因为mysql的权限问题。
yum install ambari-agent
# 不能安装的话 先yum clean all一下
# 修改ambari-agent.ini文件
# 修改hostname=host1 即ambari-server所在的节点主机名
15 [server]
16 hostname=host1
17 url_port=8440
18 secured_url_port=8441
# 启动
/etc/init.d/ambari-agent start
/etc/init.d/ambari-agent status
注:ambari-agent 启动失败查看日志错误:certificate verify failed
Failed to connect. Please check openssl library versions
在openssl版本一致的情况python-2.7.5可能会出现证书验证失败下禁用证书就可以了执行如命令:
sed -i 's/verify=platform_default/verify=disable/' /etc/python/cert-verification.cfg
通过上述的准备工作,下面的操作都要转移到图形化界面进行。通过Ambari提供的图形化界面安装Hadoop集群。
通过本地浏览器访问Ambari服务所在服务器,访问链接为http://10.10.32.231:8080,该服务器将会返回如图3-49所示的登陆界面。
该服务登录用户名默认为:admin,密码为:admin。
登录Ambari服务之后,页面会跳转到如图3-49所示的界面,选择“Launch Install Wizard”来创建一个新的集群。
这个集群的搭建步骤如下:
- Get Started
- Select Stack
- Install Options
- Confirm Hosts
- Choose Services
- Assign Masters
- Assign Staves and Clients
- Customize Services
- Review
- Install,Start and Test
- Summary
# http://{HDP本地源}/HDP/centos7/2.6.5.0-292/
# http://{HDP本地源}/HDP-UTILS-1.1.0.21-centos7/
# 可以先通过浏览器访问一下
单击“Next”按钮,系统会对上述URL进行校验,校验通过后会自动进入“Install Options”页面。
该步骤需要编辑的内容有主机名列表以及勾选手动注册。
遇到问题
注册失败问题
发现是我在/etc/profile中配置了代理的原因
删除配置解决问题
选择安装的服务
Choose Services页面提供了几乎所有大数据需要用到的组件,组件之间需要依赖的会有提示,多组件一起安装容易出现问题,建议分开安装,这里只安装zookeeper
选择指定Zookeeper Client主机完成后,单击“Next”按钮,页面跳转至Customize Services界面,可以通过Customize Services界面对Zookeeper配置文件进行编辑,一般的,没有特殊需求,该步骤保持系统默认配置。
单击“Next”按钮,页面跳转至Review界面,该界面主要展示Zookeeper组件的基本信息,让系统管理员确认Zookeeper安装信息是否正确。确认该安装信息正确无误单击“Deploy”按钮开始部署Zookeeper集群
Zookeeper集群自动安装部署过程较慢,该过程无需系统管理员介入,如果由于配置错误导致Zookeeper集群部署失败,需要查看系统部署日志、排错并进行再次安装。该步骤包括“Install”、“Start”以及“Test”操作。系统会在安装Zookeeper结束后启动并且测试该服务的运行情况。
注意:如果出现和mysql冲突的错误找对应的mysql版本的devel安装后,重新安装。
如果页面显示全部启动正常,直接“Next” 安装成功
安装hive是需要配置 hive database 选择Existing Mysql / MariaDB Database
所以事先在mysql中创建好hive database 和 用户,并授权
注意:在Database URL 中他给出的默认URL需要改正
a.hostname改为mysql所在的服务器hostname
b.在参数中添加 CreateDatabaseNotExist=true(默认没有这个参数,测试连接不成功)
因为要使用的carbondata对spark版本有要求,项目中使用的carbondata版本为1.6.1,spark版本要求为2.2.1
上面安装的HDP中默认的spark版本为 2.3.0.2.6.5.0-292所以需要更换
更换方法,
1)、找到SPARK2-HOME下的jars路径 并改名,重现创建一个jars空目录
2)、然后下载spark2.2.1的tar包,把所有依赖的jar包拷贝到上面创建的jars路径下
……:bad substitution
在MapReduce2的config/Custom mapred-site中添加
hdp.version=2.6.5.0-292
# 版本为HDP版本
1)、先下载carbondata
https://github.com/apache/carbondata
2)、构建命令
mvn -DskipTests -Pspark-2.2 -Dspark.version=2.2.1 clean package
3)、如果构建过程中没有遇到错误,carbondata目录下会生成./assembly/target/scala-2.1x/carbondata_xxx.ja的jar包。把jar包放到$SPARK_HOME/carbonlib/下
注意:carbonlib需要手动在$SPARK_HOME下创建
4)、创建carbonlib/文件夹的tar.gz文件,并将其移入carbonlib文件夹内
cd $SPARK_HOME
tar -zcvf carbondata.tar.gz carbonlib/
mv carbondata.tar.gz carbonlib/
5)、将./conf/carbon.properties.template文件从CarbonData存储库复制到文件SPARK_HOME/conf/夹,并将文件重命名为carbon.properties。
添加以下配置
carbon.storelocation=hdfs://192.168.111.111:8020/carbon/spark2.2.2/carbon.store
carbon.lock.type=HDFSLOCK
carbon.lock.path=hdfs://192.168.111.111:8020/carbon/lock
carbon.graph.rowset.size=100000
carbon.major.compaction.size=921600
enable.query.statistics=true
6)、在spark2 的Custom spark2-defaults中添加以下配置
spark.driver.extraClassPath=/usr/hdp/2.6.5.0-292/spark2/carbonlib/*
spark.driver.extraJavaOptions=-Dcarbon.properties.filepath=/usr/hdp/2.6.5.0-292/spark2/conf/carbon.properties
spark.executor.extraClassPath=carbondata.tar.gz/carbonlib/*
spark.executor.extraJavaOptions=-Dcarbon.properties.filepath=carbon.properties
spark.yarn.dist.archives=/usr/hdp/2.6.5.0-292/spark2/carbonlib/carbondata.tar.gz
spark.yarn.dist.files=/usr/hdp/2.6.5.0-292/spark2/conf/carbon.properties
7)、提交spark任务
spark-submit \
--master yarn \
--deploy-mode client \
--class org.apache.carbondata.spark.thriftserver.CarbonThriftServer \
--num-executors 20 \
--driver-memory 64G \
--executor-memory 16G \
--executor-cores 4 \
--queue s1 \
--conf spark.yarn.executor.memoryOverhead=4G \
$SPARK_HOME/carbonlib/apache-carbondata-1.6.1-bin-spark2.2.1-hadoop2.7.2.jar \
hdfs://host1:8020/carbon/spark2.2.1/carbon.store
8)、使用Beeline连接到CarbonData Thrift服务器。
beeline -u jdbc:hive2://host1:10000 -n root
9)、建表测试
create table test(id int) stored as carbondata;
# 在NameNode UI中查看 提交spark任务时的hdfs路径
# hdfs://host1:8020/carbon/spark2.2.1/carbon.store下有test
# 代表创建成功