大数据集群服务安装-mysql,hive,azkaban,sqoop,spark,python
Posted 阿尔范
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据集群服务安装-mysql,hive,azkaban,sqoop,spark,python相关的知识,希望对你有一定的参考价值。
接上一篇继续安装mysql,hive,azkaban,sqoop,spark,配置python
mysql作为hive的元数据库,azkaban的数据库使用
(一)安装mysql
1. 查看系统版本,下载适合操作系统版本的mysql rpm.
uname -r/a 查看内核版本 : 2.6.32-642.13.1.el6.x86_64
cat /etc/issue : CentOS release 6.6 (Final)
2. hadoop4 上,使用yum安装
第一步:Adding the MySQL Yum Repository
1)下载rpm https://dev.mysql.com/downloads/repo/yum/
2) rpm -Uvh mysql80-community-release-el6-1.noarch.rpm
第二部:查看repository里都有什么版本mysql, 以及默认安哪个?
yum repolist all | grep mysql
[bigdata@hadoop4 ~]$ yum repolist all | grep mysql
mysql-cluster-7.5-community MySQL Cluster 7.5 Community 禁用
mysql-cluster-7.5-community-source MySQL Cluster 7.5 Community - 禁用
mysql-cluster-7.6-community MySQL Cluster 7.6 Community 禁用
mysql-cluster-7.6-community-source MySQL Cluster 7.6 Community - 禁用
mysql-connectors-community MySQL Connectors Community 启用: 49
mysql-connectors-community-source MySQL Connectors Community - S 禁用
mysql-tools-community MySQL Tools Community 启用: 61
mysql-tools-community-source MySQL Tools Community - Source 禁用
mysql-tools-preview MySQL Tools Preview 禁用
mysql-tools-preview-source MySQL Tools Preview - Source 禁用
mysql55-community MySQL 5.5 Community Server 禁用
mysql55-community-source MySQL 5.5 Community Server - S 禁用
mysql56-community MySQL 5.6 Community Server 禁用
mysql56-community-source MySQL 5.6 Community Server - S 禁用
mysql57-community MySQL 5.7 Community Server 禁用
mysql57-community-source MySQL 5.7 Community Server - S 禁用
mysql80-community MySQL 8.0 Community Server 启用: 15
mysql80-community-source MySQL 8.0 Community Server - S 禁用
参考文章
https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/
shell> sudo yum-config-manager --disable mysql80-community
shell> sudo yum-config-manager --enable mysql57-community
shell> sudo dnf config-manager --disable mysql80-community
shell> sudo dnf config-manager --enable mysql57-community
但是上边这两个命令都没有 yum-config-manager,dnf config-manager
手动编辑:
/etc/yum.repos.d/mysql-community.repo
https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/
enabled=1打开
enabled=0关闭
# Enable to use MySQL 5.7 打开5.7[mysql57-community]name=MySQL 5.7 Community Serverbaseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
#关闭8.0
[mysql80-community] name=MySQL 8.0 Community Serverbaseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/6/$basearch/enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
修改后查看:
yum repolist enabled | grep mysql
安装:
sudo yum install mysql-community-server
查看:
sudo service mysqld status
not running
mysqld 已停
sudo service mysqld start 启动mysql服务
查看安装的mysql包
[bigdata@ai3 ~]$ rpm -qa | grep mysql
mysql-community-client-5.7.22-1.el6.x86_64
mysql-community-common-5.7.22-1.el6.x86_64
mysql-community-libs-5.7.22-1.el6.x86_64
mysql80-community-release-el6-1.noarch
mysql-community-libs-compat-5.7.22-1.el6.x86_64
mysql-community-server-5.7.22-1.el6.x86_64
https://jingyan.baidu.com/article/86112f1378bf282737978730.html
https://www.cnblogs.com/shihaiming/p/6038307.html
获取安装mysql后的密码:
在hadoop4上执行:grep 'temporary password' /var/log/mysqld.log 获得mysql安装后的初始密码:XXXXXXXXXXX
进入mysql修改初始密码:
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY '自己设定的密码';
更改mysql 的root账户的密码为XXXXXXXXXXXX
netstat -nltp
----3306 mysqld
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '安装mysql时修改后的密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
(二)安装hive
在集群中某台机器:hadoop2
1) tar -zxvf apache-hive-2.3.2-bin.tar.gz -C ~/bigdata/
2)修改配置文件
hive-site.xml
<configuration>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
<description>
Enforce metastore schema version consistency.
True: Verify that version information stored in is compatible with one from Hive jars. Also disable automatic
schema migration attempt. Users are required to manually migrate schema after Hive upgrade which ensures
proper metastore schema migration. (Default)
False: Warn if the version information stored in metastore doesn't match with one from in Hive jars.
</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop4:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>安装mysql时的用户名,一般为root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>安装mysql时修改后的密码</value>
<description>password to use against metastore database</description>
</property>
</configuration>
#hive on hbase功能: 在hive-site.xml里增加
<property>
<name>hive.aux.jars.path</name>
<value>file:${HIVE_HOME}/lib/hive-hbase-handler-2.3.2.jar,
file:${HBASE_HOME}/lib/hbase-common-1.2.6.jar,
file:${HIVE_HOME}/lib/zookeeper-3.4.6.jar</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop2,hadoop3,hadoop4</value>
</property>
3) hive-env.sh
HADOOP_HOME=/home/bigdata/bigdata/hadoop-2.7.4
4) 将mysql的连接jar包拷贝到${HIVE_HOME}/lib目录下
mysql-connector-java-5.1.45.jar
5) 初始化hive的schema
bin/schematool -dbType mysql -initSchema
如果提示错误:
Underlying cause: java.sql.SQLException : null, message from server: "Host '10-19-42-65' is not allowed to connect to this MySQL server"
是没有权限的问题,在mysql上授权(在安装mysql的机器上执行)
mysql -uroot -p
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '安装mysql时修改后的密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
继续执行 bin/schematool -dbType mysql -initSchema
6)启动hive
bin/hive
启动hive的no thrift服务
启动为前台:bin/hiveserver2
启动为后台: nohup bin/hiveserver2 1>/var/log/hiveserver.log 2>/var/log/hiveserver.err &
hive的客户端怎么连接:
先hive/bin/beeline
然后beeline> !connect jdbc:hive2//hiveserver2所启动的那台主机名:10000
或者直接: bin/beeline -u jdbc:hive2//hiveserver2所启动的那台主机名:10000 -n hadoop
7) 分发到所有其他机器上
scp -r ${HIVE_HOME}/ hadoop3:~/bigdata/
scp -r ${HIVE_HOME}/ hadoop4:~/bigdata/
(三) 安装azkaban
目前azkaban只支持 mysql,需安装mysql服务器,默认已安装好mysql服务器,并建立了 root用户,密码 XXXX
在hadoop4的 ~/bigdata/下建立目录azkaban (hadoop4也是安装mysql的机器上)
主要这三个:
1) azkaban web服务器安装
解压: tar –zxvf azkaban-web-server-2.5.0.tar.gz -C ~/bigdata/azkaban/
并重新命名为 web-server: mv azkaban-web-server-2.5.0 web-server
2) azkaban 执行服器安装
解压:tar –zxvf azkaban-executor-server-2.5.0.tar.gz -C ~/bigdata/azkaban/
并重新命名为 executor: mv azkaban-executor-server-2.5.0 executor
3) azkaban脚本导入
解压: tar –zxvf azkaban-sql-script-2.5.0.tar.gz -C ~/bigdata/azkaban/
并重新命名为 initsql: mv azkaban-sql-script-2.5.0 initsql
将解压后的mysql 脚本,导入到mysql中:
mysql -u root -p
mysql> create database azkaban;
mysql> use azkaban;
Database changed
mysql> source /home/bigdata/bigdata/azkaban/initsql/create-all-sql-2.5.0.sql;
4)创建SSL配置
命令: keytool -keystore keystore -alias jetty -genkey -keyalg RSA
运行此命令后,会提示输入当前生成 keystor的密码及相应信息,输入的密码请劳记,信息如下:
输入keystore密码:XXXXXXX
再次输入新密码:
您的名字与姓氏是什么?
[Unknown]:
您的组织单位名称是什么?
[Unknown]:
您的组织名称是什么?
[Unknown]:
您所在的城市或区域名称是什么?
[Unknown]:
您所在的州或省份名称是什么?
[Unknown]:
该单位的两字母国家代码是什么
[Unknown]: CN
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN 正确吗?
[否]: y
输入<jetty>的主密码
(如果和 keystore 密码相同,按回车):
再次输入新密码:
完成上述工作后,将在当前目录生成 keystore 证书文件,将keystore 考贝到 azkaban web服务器根目录中.如:cp keystore web-server/
5)配置文件
注:先配置好服务器节点上的时区
1、先生成时区配置文件Asia/Shanghai,用交互式命令 tzselect 即可
2、拷贝该时区文件,覆盖系统本地时区配置
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
5.1) azkaban web服务器配置
进入azkaban web服务器安装目录 conf目录
修改azkaban.properties文件
vi azkaban.properties
内容说明如下:
#Azkaban Personalization Settings
azkaban.name=Online #服务器UI名称,用于服务器上方显示的名字
azkaban.label=Online azkaban #描述
azkaban.color=#FF3601 #UI颜色
azkaban.default.servlet.path=/index #
web.resource.dir=web/ #默认根web目录
default.timezone.id=Asia/Shanghai #默认时区,已改为亚洲/上海 默认为美国
#Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager #用户权限管理默认类
user.manager.xml.file=conf/azkaban-users.xml #用户配置,具体配置参加下文
#Loader for projects
executor.global.properties=conf/global.properties # global配置文件所在位置
azkaban.project.dir=projects #
database.type=mysql #数据库类型
mysql.port=3306 #端口号
mysql.host=192.168.1.2 #数据库连接IP ----192.168.1.2
mysql.database=azkaban #数据库实例名
mysql.user=root #数据库用户名
mysql.password= XXXX #数据库密码
mysql.numconnections=100 #最大连接数
# Velocity dev mode
velocity.dev.mode=false
# Jetty服务器属性.
jetty.maxThreads=25 #最大线程数
jetty.ssl.port=8443 #Jetty SSL端口
jetty.port=8081 #Jetty端口
jetty.keystore=keystore #SSL文件名
jetty.password=XXXXX #SSL文件密码
jetty.keypassword=XXXXX #Jetty主密码 与 keystore文件相同
jetty.truststore=keystore #SSL文件名
jetty.trustpassword=XXXXX # SSL文件密码
# 执行服务器属性
executor.port=12321 #执行服务器端口
# 邮件设置
mail.sender=xxxxxxxx@163.com #发送邮箱
mail.user=xxxxxxxx #发送邮件时显示的名称
mail.password=********** #邮箱密码
lockdown.create.projects=false #
cache.directory=cache #缓存目录
5.2) azkaban 执行服务器executor配置
进入执行服务器安装目录conf,修改azkaban.properties
vi azkaban.properties
#Azkaban
default.timezone.id=Asia/Shanghai #时区
# Azkaban JobTypes 插件配置
azkaban.jobtype.plugin.dir=plugins/jobtypes #jobtype 插件所在位置
#Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
#数据库设置
database.type=mysql #数据库类型(目前只支持mysql)
mysql.port=3306 #数据库端口号
mysql.database=azkaban #数据库实例名
mysql.user=root #数据库用户名
mysql.password=XXXXX #数据库密码
mysql.numconnections=100 #最大连接数
# 执行服务器配置
executor.maxThreads=50 #最大线程数
executor.port=12321 #端口号(如修改,请与web服务中一致)
executor.flow.threads=30 #线程数
5.3) 用户配置
进入azkaban web服务器conf目录,修改azkaban-users.xml
vi azkaban-users.xml 增加 管理员用户
<azkaban-users>
<user username="azkaban" password="azkaban" roles="admin" groups="azkaban" />
<user username="metrics" password="metrics" roles="metrics"/>
<user username="admin" password="XXXXXXX" roles="admin,metrics" />
<role name="admin" permissions="ADMIN" />
<role name="metrics" permissions="METRICS"/>
</azkaban-users>
6)启动azkaban服务
mkdir -p /home/bigdata/data/azkaban/log/
mkdir -p /home/bigdata/data/azkaban/log_executor/
6.1)web服务器
在azkaban web服务器目录下执行启动命令
bin/azkaban-web-start.sh
注:在web服务器根目录运行
cd /home/bigdata/bigdata/azkaban/web-server
或者启动到后台
nohup bin/azkaban-web-start.sh 1>/home/bigdata/data/azkaban/log/azstd.out 2>/home/bigdata/data/azkaban/log/azerr.out &
6.2)执行服务器
cd /home/bigdata/bigdata/azkaban/executor
在执行服务器目录下执行启动命令
nohup bin/azkaban-executor-start.sh 1>/home/bigdata/data/azkaban/log_executor/azstd.out 2>/home/bigdata/data/azkaban/log_executor/azerr.out &
注:只能在执行服务器根目录运行
https://hadoop4:8443
输入用户名和密码:admin XXXX
用户配置里:azkaban-users.xml里设置的用户名和密码。
如果出现azkaban 连接错误:
2017/10/26 12:03:02.753 +0800 ERROR [DataSourceUtils] [Azkaban] MySQL connection test failed. Please check MySQL connection health!
org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (null, message from server: "Host 'hadoop4' is not allowed to connect to this MySQL server")
at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at azkaban.database.DataSourceUtils$MySQLBasicDataSource$MonitorThread.pingDB(DataSourceUtils.java:186)
at azkaban.database.DataSourceUtils$MySQLBasicDataSource$MonitorThread.run(DataSourceUtils.java:174)
Caused by: java.sql.SQLException: null, message from server: "Host 'hadoop2' is not allowed to connect to this MySQL server"
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Mall321#@' WITH GRANT OPTION;
FLUSH PRIVILEGES;这个root是mysql的root
(四)安装sqoop
安装sqoop的前提是已经具备java和hadoop的环境
1. tar -zxvf sqoop-1.4.6.tar.gz -C ~/bigdata/
2. 修改配置文件
cd $SQOOP_HOME/conf
cp sqoop-env-template.sh sqoop-env.sh
打开sqoop-env.sh并编辑下面几行:
export HADOOP_COMMON_HOME=/home/bigdata/bigdata/hadoop-2.7.4
export HADOOP_MAPRED_HOME=/home/bigdata/bigdata/hadoop-2.7.4
export HBASE_HOME=/home/bigdata/bigdata/hbase-1.2.6
3. 加入postgresql的jdbc驱动包
cp postgresql-9.2-1002.jdbc4.jar $SQOOP_HOME/lib/
测试连接:
error:
Error: Could not find or load main class org.apache.sqoop.Sqoop
解决办法4:
4. 把sqoop目录下的sqoop-1.4.6.jar拷贝到hadoop的lib目录下解决
$HADOOP_HOME/share/hadoop/common/lib
5. 从Sqoop往HBase里导入数据,让Row key作为单独字段
参考资料 : Row key里的字段 在HBase里也作为单独字段
http://blog.csdn.net/huanggang028/article/details/39205769
参考文章:使用sqoop导入postgresql数据到Hbase
http://blog.csdn.net/u013613428/article/details/58600989
在$SQOOP_HOME/sqoop-site.xml中加入如下配置项
<property>
<name>sqoop.hbase.add.row.key</name>
<value>true</value>
</property>
6. 分发到所有机器
scp -r ${SQOOP_HOME}/ hadoop3:~/bigdata/
scp -r ${SQOOP_HOME}/ hadoop4:~/bigdata/
(五)安装spark
Spark on YARN的原理就是依靠yarn来调度Spark,比默认的Spark运行模式性能要好的多,前提是首先部署好hadoop HDFS并且运行在yarn上,然后就可以开始部署spark on yarn了
1. 安装scala
解压配置环境变量即可。文章一已配置好。
2. 安装spark
解压spark:tar -zxvf spark-2.2.1-bin-hadoop2.7.tar.gz -C ~/bigdata/
cd $SPARK_HOME
cp spark-env.sh.template spark-env.sh
cp slaves.template slaves 不需要改
在spark-env.sh中添加:
# JDK目录
export JAVA_HOME=/usr/local/jdk8
# Scala目录
export SCALA_HOME=/data/bdsofts/scala-2.11.12
# hadoop配置文件目录
export HADOOP_CONF_DIR=/data/bdsofts/hadoop-2.7.4/etc/hadoop
3. spark 访问hive
1)hive复制到所有机器
2)将hive的hive-site.xml,core-site.xml,hdfs-site.xml 拷贝到spark/conf下
测试例子:
spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--driver-memory 2g \
--executor-memory 3g \
--executor-cores 3 \
$SPARK_HOME/examples/jars/spark-examples_2.11-2.2.1.jar \
10
4. 分发到所有机器
scp -r ${SPARK_HOME}/ hadoop3:~/bigdata/
scp -r ${SPARK_HOME}/ hadoop4:~/bigdata/
(六)配置python
配置python
在几台机器的 .bash_profile里打开
export PYTHON_HOME=/usr/local/python27
在几台机器的 .bashrc 里添加:
alias python='/usr/local/python27/bin/python'
解决这个错误:
python: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
#vi /etc/ld.so.conf.d/python2.7.conf
加入/usr/local/python27/lib
保存退出后执行
#ldconfig
参考:
https://www.cnblogs.com/biboxie/p/4233329.html
https://blog.csdn.net/wanyanxgf/article/details/8021641
以上是关于大数据集群服务安装-mysql,hive,azkaban,sqoop,spark,python的主要内容,如果未能解决你的问题,请参考以下文章