本章咱们开始正式搭建大数据环境,目标是构建一个稳定的能够运维监控的大数据环境。咱们将采用Ambari搭建底层的Hadoop环境,使用原生的方式搭建Flink,Druid,Superset等实时计算环境。使用大数据构建工具与原生安装相结合的方式,共同完成大数据环境的安装。php
Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的供应、管理和监控。Ambari已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop和Hcatalog等。html
Apache Ambari 支持HDFS、MapReduce、Hive、Pig、Hbase、Zookeepr、Sqoop和Hcatalog等的集中管理。也是顶级的hadoop管理工具之一。java
目前Ambari的版本已经更新到2.7,支持的组件也愈来愈丰富。python
Hadoop的发行版本有不少,有华为发行版,Intel发行版,Cloudera发行版(CDH),MapR版本,以及HortonWorks版本等。全部发行版都是基于Apache Hadoop衍生出来的,产生这些版本的缘由,是因为Apache Hadoop的开源协议决定的:任何人能够对其进行修改,并做为开源或商业产品发布和销售。mysql
收费版本:
收费版本通常都会由新的特性。国内绝大多数公司发行的版本都是收费的,例如Intel发行版本,华为发行版本等。linux
免费版本:
不收费的版本主要有三个(都是国外厂商)。
Cloudera版本(Cloudera’s Distribution Including Apache Hadoop)简称”CDH“。
Apache基金会hadoop
Hontonworks版本(Hortonworks Data Platform)简称“HDP”。
按照顺序表明了国内的使用率,CDH和HDP虽然是收费版本,可是他们是开源的,只是收取服务费用,严格上讲不属于收费版本。sql
Ambari基于HDP安装,可是他们不一样版本之间有不一样的对应关系。shell
Ambari2.7与HDP HDF的对应关系:数据库
也就是支持最新的版本为HDP 3.1.5 而HDP包含了大数据的基本组件以下:apache
已经很是的丰富了,下面咱们开始Ambari的安装。
前期准备分为四部分
主机,数据库,浏览器,JDK
请先准备好安装Ambari的主机,开发环境能够三台就ok,其余环境依据公司机器规模而肯定。
假设开发环境的三台机器为:
192.168.12.101 master
192.168.12.102 slave1
192.168.12.103 slave2
主机的最低要求以下:
软件要求
在每一个主机上:
yum
和rpm
(RHEL / CentOS / Oracle / Amazon Linux)zypper
和php_curl
(SLES)apt
(Debian / Ubuntu)scp, curl, unzip, tar
,wget
和 gcc*
Ambari主机应至少具备1 GB RAM,并具备500 MB可用空间。
要检查任何主机上的可用内存,请运行:
free -m
若是网速不够快,咱们能够将包下载下来,创建本地仓库。网速够快能够忽略这步。
先下载安装包
安装httpd服务
yum install yum-utils createrepo [root@master ~]# yum -y install httpd [root@master ~]# service httpd restart Redirecting to /bin/systemctl restart httpd.service [root@master ~]# chkconfig httpd on
随后创建一个本地yum源
mkdir -p /var/www/html/
将刚刚下载的包解压到这个目录下。
随后经过浏览器 访问 成功
createrepo ./ 制做本地源 修改文件里边的源地址 vi ambari.repo vi hdp.repo #VERSION_NUMBER=2.7.5.0-72 [ambari-2.7.5.0] #json.url = http://public-repo-1.hortonworks.com/HDP/hdp_urlinfo.json name=ambari Version - ambari-2.7.5.0 baseurl=https://username:password@archive.cloudera.com/p/ambari/centos7/2.x/updates/2.7.5.0 gpgcheck=1 gpgkey=https://username:password@archive.cloudera.com/p/ambari/centos7/2.x/updates/2.7.5.0/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins enabled=1 priority=1 [root@master ambari]# yum clean all [root@master ambari]# yum makecache [root@master ambari]# yum repolist
为了方便之后的管理,咱们要对机器作一些配置
安装JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html rpm -ivh jdk-8u161-linux-x64.rpm java -version
经过vi /etc/hostname 进行修改机器名 这里主要是为了能够实现经过名称来查找相应的服务器 各个节点修改为相应的名称,分别为master,slave1.slave2 vi /etc/hosts 192.168.12.101 master 192.168.12.102 slave1 192.168.12.103 slave2 vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=master(其余的节点也对应修改)
关闭防火墙 [root@master~]#systemctl disable firewalld [root@master~]#systemctl stop firewalld
ssh免密 ssh-keygen ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host
不一样的环境会有不一样的问题存在,你们能够参考官网手册进行相应的安装。
ambariserver将最终带咱们完成大数据集群的安装
yum install ambari-server Installing : postgresql-libs-9.2.18-1.el7.x86_64 1/4 Installing : postgresql-9.2.18-1.el7.x86_64 2/4 Installing : postgresql-server-9.2.18-1.el7.x86_64 3/4 Installing : ambari-server-2.7.5.0-124.x86_64 4/4 Verifying : ambari-server-2.7.5.0-124.x86_64 1/4 Verifying : postgresql-9.2.18-1.el7.x86_64 2/4 Verifying : postgresql-server-9.2.18-1.el7.x86_64 3/4 Verifying : postgresql-libs-9.2.18-1.el7.x86_64 4/4 Installed: ambari-server.x86_64 0:2.7.5.0-72 Dependency Installed: postgresql.x86_64 0:9.2.18-1.el7 postgresql-libs.x86_64 0:9.2.18-1.el7 postgresql-server.x86_64 0:9.2.18-1.el7 Complete!
设置
ambari-server setup
不推荐直接用内嵌的postgresql,由于其余服务还要用mysql
安装配置 MySql yum install -y wget wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm rpm -ivh mysql57-community-release-el7-10.noarch.rpm yum -y install mysql-community-server systemctl enable mysqld systemctl start mysqld.service systemctl status mysqld.service grep "password" /var/log/mysqld.log mysql -uroot -p set global validate_password_policy=0; set global validate_password_length=1; set global validate_password_special_char_count=0; set global validate_password_mixed_case_count=0; set global validate_password_number_count=0; select @@validate_password_number_count,@@validate_password_mixed_case_count,@@validate_password_number_count,@@validate_password_length; ALTER USER 'root'@'localhost' IDENTIFIED BY 'password'; grant all privileges on . to 'root'@'%' identified by 'password' with grant option; flush privileges; exit yum -y remove mysql57-community-release-el7-10.noarch 下载mysql驱动,放到三台的 /opt/ambari/mysql-connector-java-5.1.48.jar 初始化数据库 mysql -uroot -p create database ambari; use ambari source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql CREATE USER 'ambari'@'localhost' IDENTIFIED BY 'bigdata'; CREATE USER 'ambari'@'%' IDENTIFIED BY 'bigdata'; GRANT ALL PRIVILEGES ON ambari.* TO 'ambari'@'localhost'; GRANT ALL PRIVILEGES ON ambari.* TO 'ambari'@'%'; FLUSH PRIVILEGES;
完成ambari的配置
[root@localhost download]# ambari-server setup Using python /usr/bin/python Setup ambari-server Checking SELinux... SELinux status is 'enabled' SELinux mode is 'permissive' WARNING: SELinux is set to 'permissive' mode and temporarily disabled. OK to continue [y/n] (y)? y Customize user account for ambari-server daemon [y/n] (n)? y Enter user account for ambari-server daemon (root): Adjusting ambari-server permissions and ownership... Checking firewall status... Checking JDK... [1] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8 [2] Custom JDK ============================================================================== Enter choice (1): 2 WARNING: JDK must be installed on all hosts and JAVA_HOME must be valid on all hosts. WARNING: JCE Policy files are required for configuring Kerberos security. If you plan to use Kerberos,please make sure JCE Unlimited Strength Jurisdiction Policy Files are valid on all hosts. Path to JAVA_HOME: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/jre Validating JDK on Ambari Server...done. Check JDK version for Ambari Server... JDK version found: 8 Minimum JDK version is 8 for Ambari. Skipping to setup different JDK for Ambari Server. Checking GPL software agreement... GPL License for LZO: https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html Enable Ambari Server to download and install GPL Licensed LZO packages [y/n] (n)? y Completing setup... Configuring database... Enter advanced database configuration [y/n] (n)? y Configuring database... ============================================================================== Choose one of the following options: [1] - PostgreSQL (Embedded) [2] - Oracle [3] - MySQL / MariaDB [4] - PostgreSQL [5] - Microsoft SQL Server (Tech Preview) [6] - SQL Anywhere [7] - BDB ============================================================================== Enter choice (1): 3 Hostname (localhost): Port (3306): Database name (ambari): Username (ambari): Enter Database Password (bigdata): Configuring ambari database... Enter full path to custom jdbc driver: /opt/ambari/mysql-connector-java-5.1.48.jar Copying /opt/ambari/mysql-connector-java-5.1.48.jar to /usr/share/java Configuring remote database connection properties... WARNING: Before starting Ambari Server, you must run the following DDL directly from the database shell to create the schema: /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql Proceed with configuring remote database connection properties [y/n] (y)? y Extracting system views... ..... Ambari repo file contains latest json url http://public-repo-1.hortonworks.com/HDP/hdp_urlinfo.json, updating stacks repoinfos with it... Adjusting ambari-server permissions and ownership... Ambari Server 'setup' completed successfully.
随后就能够启动了
ambari-server start ambari-server status ambari-server stop
访问以下地址
http://<your.ambari.server>:8080
接下来进行集群的安装,包括命名,ssh免密,选择版本,规划集群
最终完成集群安装,咱们就能够在页面管理咱们的集群了。
详细官网安装文档pdf请在关注“实时流式计算” 后台回复ambari
因为ambari支持的druid版本较低,目前暂不支持flink,因此除kafka外的实时计算组件,须要手动安装,也方便之后的升级。
集群安装分为如下几步:
一、在每台机器上复制解压出来的flink目录。
二、选择一个做为master节点,而后修改全部机器conf/flink-conf.yaml
jobmanager.rpc.address = master主机名
三、修改conf/slaves,将全部work节点写入
work01 work02
四、在master上启动集群
bin/start-cluster.sh
咱们能够选择让Flink运行在Yarn集群上。
下载Flink for Hadoop的包
保证 HADOOP_HOME已经正确设置便可
启动 bin/yarn-session.sh
提交flink的批处理examples程序:
bin/flink run examples/batch/WordCount.jar
这是flink提供的examples下的批处理例子程序,统计单词个数。
$ bin/flink run examples/batch/WordCount.jar Starting execution of program Executing WordCount example with default input data set. Use --input to specify file input. Printing result to stdout. Use --output to specify output path. (a,5) (action,1) (after,1) (against,1) (all,2) (and,12) (arms,1) (arrows,1) (awry,1) (ay,1)
集群部署采用的分配以下:
将来咱们能够添加更多的主节点和查询节点
主节点建议 8vCPU 32GB内存
配置文件位于
conf/druid/cluster/master
数据节点建议
16 vCPU 122GB内存 2 * 1.9TB SSD
配置文件位于
conf/druid/cluster/data
查询服务器 建议 8vCPU 32GB内存
配置文件位于
conf/druid/cluster/query
下载最新0.17.0发行版
解压
tar -xzf apache-druid-0.17.0-bin.tar.gz cd apache-druid-0.17.0
集群模式的主要配置文件都位于:
conf/druid/cluster
conf/druid/cluster/_common/common.runtime.properties
替换
druid.metadata.storage.connector.connectURI druid.metadata.storage.connector.host
例如配置mysql为元数据存储
在mysql中配置好访问权限:
-- create a druid database, make sure to use utf8mb4 as encoding CREATE DATABASE druid DEFAULT CHARACTER SET utf8mb4; -- create a druid user CREATE USER 'druid'@'localhost' IDENTIFIED BY 'druid'; -- grant the user all the permissions on the database we just created GRANT ALL PRIVILEGES ON druid.* TO 'druid'@'localhost';
在druid中配置
druid.extensions.loadList=["mysql-metadata-storage"] druid.metadata.storage.type=mysql druid.metadata.storage.connector.connectURI=jdbc:mysql://<host>/druid druid.metadata.storage.connector.user=druid druid.metadata.storage.connector.password=diurd
将数据存储配置为S3或者HDFS
好比配置HDFS,修改
conf/druid/cluster/_common/common.runtime.properties
druid.extensions.loadList=["druid-hdfs-storage"] #druid.storage.type=local #druid.storage.storageDirectory=var/druid/segments druid.storage.type=hdfs druid.storage.storageDirectory=/druid/segments #druid.indexer.logs.type=file #druid.indexer.logs.directory=var/druid/indexing-logs druid.indexer.logs.type=hdfs druid.indexer.logs.directory=/druid/indexing-logs
将Hadoop配置XML(core-site.xml,hdfs-site.xml,yarn-site.xml,mapred-site.xml)放在Druid中
conf/druid/cluster/_common/
仍是修改
conf/druid/cluster/_common/
下的
druid.zk.service.host
为zk服务器地址就能够了
启动前注意打开端口限制
主节点:
derby 1527
zk 2181
Coordinator 8081
Overlord 8090
数据节点:
Historical 8083
Middle Manager 8091, 8100–8199
查询节点:
Broker 8082
Router 8088
记得将刚才配好的druid复制到各个节点
因为咱们使用外部zk 因此使用no-zk启动
bin/start-cluster-master-no-zk-server
bin/start-cluster-data-server
bin/start-cluster-query-server
这样的话 集群就启动成功了!
至此,咱们的大数据环境基本搭建完毕,下一章咱们将接入数据,开始进行标签的开发,未完待续~
参考文献
《用户画像:方法论与工程化解决方案》
更多实时数据分析相关博文与科技资讯,欢迎关注 “实时流式计算” 详细ambari官网安装文档pdf请在关注“实时流式计算” 后台回复ambari