资源描述
南京第五十五所技术开发有限公司
先电大数据平台
用户手册
用户手册
用户手册
版本:先电 Cloud-BigData-v2.1
发布日期:2017年02月21日
南京第五十五所技术开发有限公司
1
南京第五十五所技术开发有限公司
版本修订说明
修订版本
修订时间
修订说明
XD-BigData-v1.3
2015年10月28日
先电大数据平台用户册
XD-BigData-v1.3.1
2016年1月19日
增加GRE、VLAN网络的部署方法
XD-BigData-v1.4
2016年4月12日
为防止与Java Web中MapReduce开发混淆。删除hadoop案例开发
XD-BigData-v2.0
2016年11月1日
更新基于Ambari版本 2.2.2.0二次开发的hadoop平台
XD-BigData-v2.0.1
2016年12月30日
更新镜像中与perl版本不兼容问题的解决办法;
XD-BigData-v2.0.2
2017年01月10日
升级系统版本为centos7,升级HDP版本至2.4。
XD-BigData-v2.0.3
2017年02月13日
更新软件包logo
XD-BigData-v2.0.5
2017年02月21日
更新软件包logo,修改文档“8.2.2基于项目的协同过滤”
表格参数
XD-BigData-v2.1
2017年04月21日
更新用户手册
目 录
1 概述 5
1.1 大数据简介 5
1.2 先电大数据平台简介 5
2 基本环境配置 6
2.1 配置主机名 7
2.2 修改hosts文件 7
2.3 修改yum源 7
2.4 配置ntp 8
2.5 配置SSH 9
2.6 禁用Transparent Huge Pages 9
2.7 安装配置JDK 10
3 配置ambari-server 11
3.1 安装MariaDB数据库 11
3.2 安装配置ambari-server 12
4 配置ambari-agent 14
5 部署管理Hadoop集群 14
5.1 部署Hadoop集群 14
5.2 HDFS运维管理 21
5.3 MapReduce 31
6 部署Hive数据仓库 33
6.1 部署Hive 33
6.1 Hive用户指南 35
7 部署Hbase分布式列数据库 45
7.1 部署HBase 45
7.2 测试验证 47
7.3 HBase用户指南 47
8 部署Mahout数据挖据工具 53
8.1 部署Mahout 53
8.2 测试验证 54
9 部署Pig数据分析平台 55
9.1 部署Pig 55
9.2 Pig简介 55
9.3 运行案例 56
第 79 页 共 79 页
1 概述
1.1 大数据简介
“大数据”是一个体量特别大,数据类别特别庞杂的数据集合,并且这样的数据集无法用传统数据库工具或常规软件工具抓取、管理和处理其内容。大数据技术是指从各种各样类型的庞杂数据中,快速的获取有价值的信息的能力。适用于大数据的技术包括大规模并行处理数据库,数据挖掘电网,分布式文件系统,分布式数据库,云计算平台和可扩展的存储系统。
Apache的Hadoop项目是可靠的、可扩展的、开源的、分布式计算软件。Apache的Hadoop软件库是允许通过相对简单的程序模型构建计算集群为庞大的数据集进行分布式计算的框架。
Hadoop的设计思想可以将计算模式从单节点服务器扩展为数以千计的计算集群,每一个单独的服务器都提供自主的本地计算及存储能力。
对于高可用指标而言,Hadoop软件库自身可以通过检测和故障调试从应用层来实现高可用而不需要关心硬件底层的高可用性。所以提供一个计算集群上层的高可用服务对于集群故障修复而言就显得至关重要。
1.2 先电大数据平台简介
先电大数据平台是基于Ambari进行二次开发的Hadoop分布式集群配置管理工具,该平台通过安装向导来进行集群的搭建,简化了集群供应。同时,他还有一个监控组件,叫做Ambari-Metrics,可以提前配置好关键的运维指标(metrics),然后收集集群的中服务、主机等运行状态等信息,通过WEB的方式显示出来。我们可以直接查看Hadoop Core(HDFS和MapReduce)及相关项目(如HBase、Hive和HCatalog)是否健康。它的用户界面非常直观,用户可以轻松有效地查看信息并控制集群。
先电大数据平台支持作业与任务执行的可视化与分析,能够更好地查看依赖和性能。通过一个完整的RESTful API把监控信息暴露出来,集成了现有的运维工具。平台使用Ganglia收集度量指标,用Nagios支持系统报警。
图1.1 Ambari结构图
其中Ambari是一个分布式架构的软件,主要由两部分组成:Ambari Server 和 Ambari Agent,如图1-1所示。Ambari Server 会读取 Stack 和 Service 的配置文件。当用 Ambari 创建集群的时候,Ambari Server 传送 Stack 和 Service 的配置文件以及 Service 生命周期的控制脚本到 Ambari Agent。Agent 拿到配置文件后,会下载安装公共源里软件包(Redhat,就是使用 yum 服务)。安装完成后,Ambari Server 会通知 Agent 去启动 Service。之后 Ambari Server 会定期发送命令到 Agent 检查 Service 的状态,Agent 上报给 Server,并呈现在 Ambari 的 GUI 上,方便用户了解到集群的各种状态,并进行相应的维护。
图 1-1 Ambari架构图
2 基本环境配置
以两台节点为例来组件Hadoop分布式集群,这里采用的系统版本为Centos7,如下表所示:
主机名
内存
硬盘
IP地址
角色
master
8192MB
100G
192.168.200.131
Ambari-Server
slaver1
4096MB
100G
192.168.200.133
Ambari-Agent
2.1 配置主机名
# master
# hostnamectl set-hostname master
# hostname
master
# slaver1
# hostnamectl set-hostname slaver1
# hostname
slaver1
2.2 修改hosts文件
# master & slaver1
# vi /etc/hosts
192.168.200.131 master
192.168.200.133 slaver1
2.3 修改yum源
# master
将XianDian-BigData-v2.0.2-BASE.iso挂在到/mnt目录下,将其中的ambari解压到/opt目录下,并在master节点配置ftp服务。
注意:
因为安装大数据相关软件包时,可能会用到相关依赖软件包,所以需要配置Centos7 Yum源,这里可以采用IAAS中的Centos7 Yum源。
# master & slaver1
# cd /etc/yum.repos.d/
# rm -vf *
配置Yum源
# vi ambari.repo
[centos7]
baseurl=ftp://192.168.2.10/centos7/
( 注:具体的yum源根据真实环境配置,本次为实验室测试环境 )
gpgcheck=0
enabled=1
name=centos
[ambari]
name=ambari
baseurl=ftp://10.0.3.61/ambari
( 注:具体的yum源根据真实环境配置,本次为实验室测试环境 )
enabled=1
gpgcheck=0
# master
# yum -y install httpd
将/mnt/文件夹中HDP-2.4-BASE和HDP-UTILS-1.1.0.20两个文件夹拷贝到/var/www/html/目录下。启动httpd服务。
# systemctl enable httpd.service
# systemctl status httpd.service
2.4 配置ntp
# master
# yum -y install ntp
# vi /etc/ntp.conf
注释或者删除以下四行
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 127.127.1.0
fudge 127.127.1.0 stratum 10
#systemctl enable ntpd
#systemctl start ntpd
# slaver1
# yum -y install ntpdate
# ntpdate master
# systemctl enable ntpdate
2.5 配置SSH
# master & slaver1
检查2个节点是否可以通过无密钥相互访问,如果未配置,则进行SSH无密码公钥认证配置。如下:
# yum install openssh-clients
# ssh-keygen
# ssh-copy-id master.hadoop
# ssh-copy-id slaver1.hadoop
ssh登录远程主机查看是否成功
# ssh master.hadoop
# exit
# ssh slaver1.hadoop
# exit
2.6 禁用Transparent Huge Pages
操作系统后台有一个叫做khugepaged的进程,它会一直扫描所有进程占用的内存,在可能的情况下会把4kpage交换为Huge Pages,在这个过程中,对于操作的内存的各种分配活动都需要各种内存锁,直接影响程序的内存访问性能,并且,这个过程对于应用是透明的,在应用层面不可控制,对于专门为4k page优化的程序来说,可能会造成随机的性能下降现象。
# master & slaver1
# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# echo never > /sys/kernel/mm/transparent_hugepage/defrag
# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
重启后失效,需要再次执行
2.7 安装配置JDK
# master
# mkdir /usr/jdk64/
# mount -o loop XianDian-BigData-v2.0.2-BASE.iso /mnt/
# cd /mnt/
# tar -zxvf jdk-8u77-linux-x64.tar.gz -C /usr/jdk64/
# vi /etc/profile
export JAVA_HOME=/usr/jdk64/jdk1.8.0_77
export PATH=$JAVA_HOME/bin:$PATH
# source /etc/profile
#java –version
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)
# slaver1
#mkdir /usr/jdk64/
#scp 172.24.14.106://mnt/jdk-8u77-linux-x64.tar.gz .
# tar -zxvf jdk-8u77-linux-x64.tar.gz -C /usr/jdk64/
# vi /etc/profile
export JAVA_HOME=/usr/jdk64/jdk1.8.0_77
export PATH=$JAVA_HOME/bin:$PATH
# source /etc/profile
#java –version
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)
3 配置ambari-server
# master
# yum -y install ambari-server
3.1 安装MariaDB数据库
# master
# yum install mariadb mariadb-server mysql-connector-java
启动服务
# systemctl enable mariadb
# systemctl start mariadb
配置MySQL
#mysql_secure_installation
按enter确认后设置数据库root密码,我们这里设置为“bigdata”
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] n
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
创建ambari数据库
# mysql -uroot -pbigdata
MariaDB [(none)]> create database ambari;
MariaDB [(none)]> grant all privileges on ambari.* to 'ambari'@'localhost' identified by 'bigdata';
MariaDB [(none)]> grant all privileges on ambari.* to 'ambari'@'%' identified by 'bigdata';
MariaDB [(none)]> use ambari;
MariaDB [ambari]> source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
MariaDB [ambari]> Bye
3.2 安装配置ambari-server
# master
# ambari-server setup
WARNING: SELinux is set to 'permissive' mode and temporarily disabled.
OK to continue [y/n] (y)?
Customize user account for ambari-server daemon [y/n] (n)? n
Checking JDK...
[1] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8
[2] Oracle JDK 1.7 + Java Cryptography Extension (JCE) Policy Files 7
[3] Custom JDK
==============================================================================
Enter choice (1): 3
Path to JAVA_HOME: /usr/jdk64/jdk1.8.0_77
Validating JDK on Ambari Server...done.
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
[4] - PostgreSQL
[5] - Microsoft SQL Server (Tech Preview)
[6] - SQL Anywhere
====================================================================
Enter choice (1): 3
Hostname (localhost):
Port (3306):
Database name (ambari):
Username (ambari):
Enter Database Password (bigdata):
Proceed with configuring remote database connection properties [y/n] (y)?
Ambari Server 'setup' completed successfully.
启动ambari-server服务
# ambari-server start
登陆界面http://192.168.200.131:8080/
登录用户名密码为admin:admin
4 配置ambari-agent
# master & slaver1
# yum -y install ambari-agent
# vi /etc/ambari-agent/conf/ambari-agent.ini
[server]
hostname= master
# ambari-agent restart
# tail -f /var/log/ambari-agent/ambari-agent.log
INFO 2017-01-12 09:44:20,919 Controller.py:265 - Heartbeat response received (id = 1340)
INFO 2017-01-12 09:44:30,820 Heartbeat.py:78 - Building Heartbeat: {responseId = 1340, timestamp = 1484214270820, commandsInProgress = False, componentsMapped = True}
5 部署管理Hadoop集群
5.1 部署Hadoop集群
登陆界面http://{IP Address}:8080/,用户名密码为admin:admin。接下来就可以启动安装向导,创建集群,安装服务。
关于XianDian-BigData 的软件包进行了分开打包。
XianDian-BigData-v2.0.2-BASE.iso软件包包含HDFS、MapReduce2、YARN、Tez、Hive、HBase、Pig、Sqoop、Zookeeper、Storm、Flume、Ambari Metrics、Kerberos、Mahou、Spark等服务组件。
XianDian-BigData-v2.0.2-EXT.iso软件包包含了accumulo、atlas、falcon、kafka、knox、oozie、ranger、slider等服务组件。这里如果需要这些服务组件,则需要添加一个yum配置文件,如下:
# vi HDP-EXTEND.repo
[HDP-2.4-EXTEND]
name=HDP-2.4-EXTEND
baseurl=http://master/HDP-2.4-EXTEND
enabled=1
gpgcheck=0
这里要设置Grafana Admin的密码。
部署成功后,便可成功进入界面。在主界面中,可以查看集群状态监控信息。
在HadoopMaster的终端执行jps命令,在打印结果中会看到master上运行的进程,这些进程表示主节点进程启动成功。
在HadoopSlave 的终端执行jps命令,也会看到相应的进程:
Slaver1:
5.2 HDFS运维管理
5.2.1 HDFS命令手册
1. 概述
切换到hdfs用户,可以通过“hadoop fs -”命令来查看HDFS文件系统的帮助命令,通过提示的命令来对文件系统进行管理。
命令如下:
$ hadoop fs -
执行结果如下:
所有的hadoop命令均由bin/hadoop脚本引发。不指定参数运行hadoop脚本会打印所有命令的描述。
用法:hadoop [--config confdir] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS]
Hadoop有一个选项解析框架用于解析一般的选项和运行类。
命令选项
描述
--config confdir
覆盖缺省配置目录。缺省是${HADOOP_HOME}/conf
GENERIC_OPTIONS
多个命令都支持的通用选项
COMMAND 命令选项S
各种各样的命令和它们的选项会在下面提到。这些命令被分为 用户命令 管理命令两组。
2. 权限管理
在Hadoop集群中,只有hdfs用户才有对HDFS文件系统的管理权限,当其它用户对文件系统进行操作,需要给其赋予相应的权限,这里为了方便操作,将所有用户的读写执行权限全部放开,命令如下:
# su hdfs
$ hadoop fs -chmod -R 777 /
3. 常规选项
下面的选项被 dfsadmin, fs, fsck和 job支持。 应用程序要实现 Tool来支持常规选项。
GENERIC_OPTION
描述
-conf <configuration file>
指定应用程序的配置文件。
-D <property=value>
为指定property指定值value。
-fs <local|namenode:port>
指定namenode。
-jt <local|jobtracker:port>
指定job tracker。只适用于job。
-files <逗号分隔的文件列表>
指定要拷贝到map reduce集群的文件的逗号分隔的列表。 只适用于job。
-libjars <逗号分隔的jar列表>
指定要包含到classpath中的jar文件的逗号分隔的列表。 只适用于job。
-archives <逗号分隔的archive列表>
指定要被解压到计算节点上的档案文件的逗号分割的列表。 只适用于job。
4. 用户命令
hadoop集群用户的常用命令。
archive
创建一个hadoop档案文件。参考 Hadoop Archives.
用法:hadoop archive -archiveName NAME -p <parent path> <src>* <dest>
命令选项
描述
-archiveName NAME
要创建的档案的名字。
-p <parent path>
父路径,格式与正则表达式一致。
src
父路径下面需要创建档案的文件名(可多个)
dest
保存档案文件的目标目录。
distcp
递归地拷贝文件或目录。参考DistCp指南以获取等多信息。
用法:hadoop distcp <srcurl> <desturl>
命令选项
描述
srcurl
源Url
desturl
目的Url
fs
用法:hadoop fs [GENERIC_OPTIONS] [COMMAND_OPTIONS]
运行一个常规的文件系统客户端。
fsck
运行HDFS文件系统检查工具。参考Fsck了解更多。
用法:hadoop fsck [GENERIC_OPTIONS] <path> [-move | -delete | -openforwrite] [-files [-blocks [-locations | -racks]]]
命令选项
描述
<path>
检查的起始目录。
-move
移动受损文件到/lost+found
-delete
删除受损文件。
-openforwrite
打印出写打开的文件。
-files
打印出正被检查的文件。
-blocks
打印出块信息报告。
-locations
打印出每个块的位置信息。
-racks
打印出data-node的网络拓扑结构。
jar
运行jar文件。用户可以把他们的Map Reduce代码捆绑到jar文件中,使用这个命令执行。
用法:hadoop jar <jar> [mainClass] args...
job
用于和Map Reduce作业交互和命令。
用法:hadoop job [GENERIC_OPTIONS] [-submit <job-file>] | [-status <job-id>] | [-counter <job-id> <group-name> <counter-name>] | [-kill <job-id>] | [-events <job-id> <from-event-#> <#-of-events>] | [-history [all] <jobOutputDir>] | [-list [all]] | [-kill-task <task-id>] | [-fail-task <task-id>]
命令选项
描述
-submit <job-file>
提交作业
-status <job-id>
打印map和reduce完成百分比和所有计数器。
-counter <job-id> <group-name> <counter-name>
打印计数器的值。
-kill <job-id>
杀死指定作业。
-events <job-id> <from-event-#> <#-of-events>
打印给定范围内jobtracker接收到的事件细节。
-history [all] <jobOutputDir>
-history <jobOutputDir> 打印作业的细节、失败及被杀死原因的细节。更多的关于一个作业的细节比如成功的任务,做过的任务尝试等信息可以通过指定[all]选项查看。
-list [all]
-list all显示所有作业。-list只显示将要完成的作业。
-kill-task <task-id>
杀死任务。被杀死的任务不会不利于失败尝试。
-fail-task <task-id>
使任务失败。被失败的任务会对失败尝试不利。
pipes
运行pipes作业。
用法:hadoop pipes [-conf <path>] [-jobconf <key=value>, <key=value>, ...] [-input <path>] [-output <path>] [-jar <jar file>] [-inputformat <class>] [-map <class>] [-partitioner <class>] [-reduce <class>] [-writer <class>] [-program <executable>] [-reduces <num>]
命令选项
描述
-conf <path>
作业的配置
-jobconf <key=value>, <key=value>, ...
增加/覆盖作业的配置项
-input <path>
输入目录
-output <path>
输出目录
-jar <jar file>
Jar文件名
-inputformat <class>
InputFormat类
-map <class>
Java Map类
-partitioner <class>
Java Partitioner
-reduce <class>
Java Reduce类
-writer <class>
Java RecordWriter
-program <executable>
可执行程序的URI
-reduces <num>
reduce个数
version
打印版本信息。
用法:hadoop version
CLASSNAME
hadoop脚本可用于调调用任何类。
用法:hadoop CLASSNAME
运行名字为CLASSNAME的类。
5. 管理命令
hadoop集群管理员常用的命令。
balancer
运行集群平衡工具。管理员可以简单的按Ctrl-C来停止平衡过程。参考Rebalancer了解更多。
用法:hadoop balancer [-threshold <threshold>]
命令选项
描述
-threshold <threshold>
磁盘容量的百分比。这会覆盖缺省的阀值。
daemonlog
获取或设置每个守护进程的日志级别。
用法:hadoop daemonlog -getlevel <host:port> <classname>
用法:hadoop daemonlog -setlevel <host:port> <classname> <level>
命令选项
描述
-getlevel <host:port> <classname>
打印运行在<host:port>的守护进程的日志级别。这个命令内部会连接http://<host:port>/logLevel?log=<name>
-setlevel <host:port> <classname> <level>
设置运行在<host:port>的守护进程的日志级别。这个命令内部会连接http://<host:port>/logLevel?log=<name>
datanode
运行一个HDFS的datanode。
用法:hadoop datanode [-rollback]
命令选项
描述
-report
报告文件系统的基本信息和统计信息。
-safemode enter | leave | get | wait
安全模式维护命令。安全模式是Namenode的一个状态,这种状态下,Namenode
1. 不接受对名字空间的更改(只读)
2. 不复制或删除块
Namenode会在启动时自动进入安全模式,当配置的块最小百分比数满足最小的副本数条件时,会自动离开安全模式。安全模式可以手动进入,但是这样的话也必须手动关闭安全模式。
-refreshNodes
重新读取hosts和exclude文件,更新允许连到Namenode的或那些需要退出或入编的Datanode的集合。
-finalizeUpgrade
终结HDFS的升级操作。Datanode删除前一个版本的工作目录,之后Namenode也这样做。这个操作完结整个升级过程。
-upgradeProgress status | details | force
请求当前系统的升级状态,状态的细节,或者强制升级操作进行。
-metasave filename
保存Namenode的主要数据结构到hadoop.log.dir属性指定的目录下的<filename>文件。对于下面的每一项,<filename>中都会一行内容与之对应
1. Namenode收到的Datanode的心跳信号
2. 等待被复制的块
3. 正在被复制的块
4. 等待被删除的块
-setQuota <quota> <dirname>...<dirname>
为每个目录 <dirname>设定配额<quota>。目录配额是一个长整型整数,强制限定了目录树下的名字个数。
命令会在这个目录上工作良好,以下情况会报错:
1. N不是一个正整数,或者
2. 用户不是管理员,或者
3. 这个目录不存在或是文件,或者
4. 目录会马上超出新设定的配额。
-clrQuota <dirname>...<dirname>
为每一个目录<dirname>清除配额设定。
命令会在这个目录上工作良好,以下情况会报错:
1. 这个目录不存在或是文件,或者
2. 用户不是管理员。
如果目录原来没有配额不会报错。
-help [cmd]
显示给定命令的帮助信息,如果没有给定命令,则显示所有命令的帮助信息。
secondarynamenode
运行HDFS的secondary namenode。
用法:hadoop secondarynamenode [-checkpoint [force]] | [-geteditsize]
命令选项
描述
-checkpoint [force]
如果EditLog的大小 >= fs.checkpoint.size,启动Secondary namenode的检查点过程。 如果使用了-force,将不考虑EditLog的大小。
-geteditsize
打印EditLog大小。
5.2.2 进程管理
1. 查看当前系统中启动的进程
命令如下:
# jps
执行结果如下:
2. 重启NameNode和DateNode进程
hadoop-daemon.sh脚本是启动和停止hadoop后台程序,“—config”参数指定启动程序时用到的配置文件目录。
命令如下:
# /usr/hdp/current/hadoop-client/sbin/hadoop-daemon.sh --config /usr/hdp/current/hadoop-client/conf stop {namenode/datenode}
# /usr/hdp/current/h
展开阅读全文