以上就是给各位分享centos系统下离线安装flask,其中也会对linux离线安装flask进行解释,同时本文还将给你拓展ansible2.9.18centos7x86_64系统下的完全rpm离线安
以上就是给各位分享centos系统下离线安装flask,其中也会对linux离线安装flask进行解释,同时本文还将给你拓展ansible2.9.18 centos7 x86_64系统下的完全rpm离线安装、CDH 5.9 CentOS 6.5 离线安装部署、CDH在Centos 7离线安装、CentOS 64bit 下安装Flashplayer等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:- centos系统下离线安装flask(linux离线安装flask)
- ansible2.9.18 centos7 x86_64系统下的完全rpm离线安装
- CDH 5.9 CentOS 6.5 离线安装部署
- CDH在Centos 7离线安装
- CentOS 64bit 下安装Flashplayer
centos系统下离线安装flask(linux离线安装flask)
flask的安装与django的安装不同,flask依赖于数个安装包,具体依赖的组件可在安装包下的setup.py中查看
以安装Flask-0.12版本为例,我自己的机器上需要的安装包包括:
Babel-2.3.4.tar.gz
click-6.7.tar.gz
Flask-0.12.tar.gz
itsdangerous-0.24.tar.gz
Jinja2-2.9.4.tar.gz
MarkupSafe-0.23.tar.gz
pytz-2016.10.tar.gz
Werkzeug-0.11.15.tar.gz
将这些安装包上传到服务器后,使用pip instal * 的命令就可以执行安装
ansible2.9.18 centos7 x86_64系统下的完全rpm离线安装
ansible2.9.18 centos7 x86_64系统下的完全rpm离线安装
下载地址如下:
https://pan.baidu.com/s/1wBQMFfIS8ZqEf8pBsyZgUQ 提取码:ansi
安装方法如下:
下载的包是一个tar.gz 包,进入解压后的目录,执行一条命令:rpm -ivh * 即可,没有别的依赖需要单独安装,即刻使用,超级方便!!!~~~~
[root@centos10 ansible_offline]# ls
ansible-2.9.18-1.el7.noarch.rpm python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch.rpm python-ply-3.4-11.el7.noarch.rpm
libyaml-0.1.4-11.el7_0.x86_64.rpm python-cffi-1.6.0-5.el7.x86_64.rpm python-pycparser-2.14-1.el7.noarch.rpm
python2-cryptography-1.7.2-2.el7.x86_64.rpm python-enum34-1.0.4-1.el7.noarch.rpm python-setuptools-0.9.8-7.el7.noarch.rpm
python2-httplib2-0.18.1-3.el7.noarch.rpm python-idna-2.4-1.el7.noarch.rpm python-six-1.9.0-2.el7.noarch.rpm
python2-jmespath-0.9.4-2.el7.noarch.rpm python-ipaddress-1.0.16-2.el7.noarch.rpm PyYAML-3.10-11.el7.x86_64.rpm
python2-pyasn1-0.1.9-7.el7.noarch.rpm python-jinja2-2.7.2-4.el7.noarch.rpm sshpass-1.06-1.el7.x86_64.rpm
python-babel-0.9.6-8.el7.noarch.rpm python-markupsafe-0.11-10.el7.x86_64.rpm
python-backports-1.0-8.el7.x86_64.rpm python-paramiko-2.1.1-9.el7.noarch.rpm
测试方法如下:
[root@centos10 ~]# ansible --version
ansible 2.9.18
config file = /etc/ansible/ansible.cfg
configured module search path = [u''/root/.ansible/plugins/modules'', u''/usr/share/ansible/plugins/modules'']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Apr 2 2020, 13:16:51) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]
如上输出表示ansible安装成功!!!!!!!
总结
以上是小编为你收集整理的ansible2.9.18 centos7 x86_64系统下的完全rpm离线安装全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
原文地址:https://blog.csdn.net/alwaysbefine/article/details/116837118
CDH 5.9 CentOS 6.5 离线安装部署
CDH 5.9 离线安装部署手册
站在巨人的肩膀上面继续前进,不断的踩坑与填坑,感谢破击手的参考指南。
安装包下载
考虑到公司机器不能直接上外网,采用离线安装方式,需要先下载好安装包如下。
Cloudera Manager 5.9http://archive-primary.cloudera.com/cm5/cm/5/cloudera-manager-el6-cm5.9.0_x86_64.tar.gz
CDH5.9 主文件http://archive-primary.cloudera.com/cdh5/parcels/5.9.0.23/CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel
CDH5.9 sha文件http://archive-primary.cloudera.com/cdh5/parcels/5.9.0.23/CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel.sha1
manifest 文件http://archive-primary.cloudera.com/cdh5/parcels/5.9.0.23/manifest.json
下载后将这些包上传到master机器的/opt/cdn
目录下
机器规划
规划搞5台,一台master,四台node节点,搞了一台牛叉的物理机,再虚拟五台出来。
172.16.18.150 master 172.16.18.150 node01 172.16.18.150 node02 172.16.18.150 node03 172.16.18.150 node04
虚拟安装操作系统为Red Hat 6.5
64位,Centos也是一样。
主机名配置
修改/etc/hosts文件,五台机均添加如下内容
172.16.18.150 master 172.16.18.151 node01 172.16.18.152 node02 172.16.18.153 node03 172.16.18.154 node04
修改/etc/sysconfig/network文件,在此只列举master机器的配置如下
NETWORKING=yes HOSTNAME=master
reboot
重启生效
免密码登陆配置
SSH免密码登陆,因为HADOOP环境中需要机器传输文件啥的。
在五台机器上均执行命令ssh-keygen -t rsa
,遇到提示一路回车,生成公钥文件
在master上面执行命令cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
在master上面将授权文件分别拷贝到其它四个节点scp ~/.ssh/authorized_keys root@node01:~/.ssh/
此时的你可以在master上任意scp一个文件到其它节点机器,发现不用输入密码了,恭喜成功了。
关闭防火墙
防火墙可能引起Hadoop相关组件之间的通讯,所以关闭它,五台机器均执行以下操作。
service iptables stop (临时关闭) chkconfig iptables off (重启后生效)
关闭SELINUXsetenforce 0
临时生效,另外修改修改/etc/selinux/config 下的SELINUX=disabled
,重启机器
NTP配置
NTP时间同步,集群机器之间必须时间同步,不一定分秒不差,但要保持在一个合理的范围之内,不然服务运行会报错。时间同步有两种方式,一种是五台均同步单独的时钟服务器,一种是使用master本身作为时钟服务器,其它节点同步它,接下来采用第二种方式。
修改配置文件
打开master机器/etc/ntp.conf
文件,其它地方可以注释,留下如下关键信息,保存退出。
driftfile /var/lib/ntp/drift restrict 127.0.0.1 restrict -6 ::1 restrict default nomodify notrap server 127.127.1.0 fudge 127.127.1.0 stratum 8 includefile /etc/ntp/crypto/pw keys /etc/ntp/keys
启动服务
执行如下命令启动NTP服务,如果服务之前己启动,则重启服务。ntp与自身进行同步需要一小段时间,大约需要5分钟。
service ntpd start chkconfig ntpd on
使用命令ntpstat
检查服务启动后自身是否同步完成,如出现以下信息则完成。
synchronised to local net at stratum 9 time correct to within 12 ms polling server every 64 s
客户端同步
好了,服务己启动,就差其它节点机器同步了,使用命令ntpdate 172.16.18.150
查看结果,如出现以下信息则同步完成。
24 Feb 13:37:35 ntpdate[13675]: adjust time server 172.16.18.150 offset 0.068598 sec
实用shell
实用shell这一小节主要是讲的后续安装过程可能是考虑到各个机器间需要拷贝文件啥的,用脚本的方式批处理,这是破击手文中提到的非常棒的想法,我就照搬不误的啦,在屏幕面前静静滴看着刷刷的快感。
在master机器root目录下,产生一个nodes
文件,文件内容如下,主要将各节点的主机名维护起来
node01 node02 node03 node04
在master机器root目录下,产生一个scp.sh
文件,文件内容如下,输入需要传送的源文件路径与目标机器的存放路径两个参数,路径都是绝对路径。
#!/bin/bash cat nodes | while read host do { scp -r $1 $host:$2 }&wait done
JAVA环境安装
JDK环境的安装大家伙都是比较熟悉的啦,一般新安装的系统都会自带OpenJDK版本,使用rpm-qa|grep java
,如果有则使用命令yum -y remove xxxx
进行删除,我这里采用的版本是1.8.0_112
,将下载好的JDK包解压放至/opt/java
目录下
调置环境变量,编辑文件/etc/profile
添加如下内容
export JAVA_HOME=/opt/java export PATH=$JAVA_HOME/bin:$PATH
拷贝JAVA文件与profile文件至其它节点,注意一点,其它节点不需要己经存在java
目录,此脚本会自动创建其目录
./scp.sh /opt/java/ /opt/java/ ./scp.sh /etc/profile /etc
设置全局变量并生效,在五台机器上均执行如下命令
source /etc/profile echo "JAVA_HOME=/opt/java" >> /etc/environment
检查JAVA是否安装成功,执行命令java -version
出现如下结果
java version "1.8.0_112" Java(TM) SE Runtime Environment (build 1.8.0_112-b15) Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15,mixed mode)
MysqL安装
安装MysqL
MysqL安装是供CM使用,只需要在master机器上安装。我采用的是5.6.24
版本,需要下载如下安装包,然后依次采用命令rpm -ivh xxxxx
进行安装,如果中间出现冲突,就先删除再装
MysqL-libs-5.1.66-2.el6_3.x86_64.rpm MysqL-shared-5.6.24-1.el6.x86_64.rpm MysqL-devel-5.6.24-1.el6.x86_64.rpm MysqL-server-5.6.24-1.el6.x86_64.rpm MysqL-client-5.6.24-1.el6.x86_64.rpm
启动MysqL服务
chkconfig MysqL on
service MysqL start
修改初始密码
MysqL启动后,默认其实己经生成了默认密码,密码保存在/root/.MysqL_secret
文件中,但是这个密码怪怪的,一般为了以后方便起见,都需要改一下,这里我改成123456
,执行如下命令。
# service MysqL stop # MysqLd_safe --user=MysqL --skip-grant-tables --skip-networking& # MysqL -u root MysqL MysqL> use MysqL; MysqL> UPDATE user SET Password=PASSWORD('123456')where USER='root'; MysqL> FLUSH PRIVILEGES; MysqL> quit # service MysqL restart # MysqL -u root –p Enter password: 123456 MysqL>SET PASSWORD=PASSWORD('123456'); (重置密码) MysqL> use MysqL; (此DB存放MysqL的各种配置信息) Database changed MysqL> select host,user from user; (查看是否能够查询)
设置远程登陆
执行如下命令
MysqL> Grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option; (允许远程用户登录MysqL) MysqL>flush privileges;
到此恭喜你MysqL的环境己基本配置完成
创建CM用的数据库
执行如下命令,这些库是接下来集群安装时所需要的,用意暂且不表。
--hive数据库 create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci; --oozie数据库 create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci; --hue数据库 create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Cloudera推荐设置
在试安装的过程,发现Cloudera给出了一些警告,如下图
设置swap空间
echo "vm.swappiness = 10" >> /etc/sysctl.conf ./scp.sh /etc/sysctl.conf /etc/
关闭大页面压缩
试过只设置defrag,但貌似个别节点还是会有警告,干脆全部设置,编辑/etc/rc.local
,末尾添加如下命令
echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag
同步到各个节点机器./scp.sh /etc/rc.local /etc/
,然后重启reboot
生效。
安装CM
- 进入
/opt/cdh
目录,将CM解压到/opt目录下,不能解压到其他地方,因为cdh5的源会默认在/opt/cloudera/parcel-repo寻找,而CM可以按照个人喜好安装
tar -zxvf cloudera-manager-el6-cm5.9.0_x86_64.tar.gz -C /opt/ mkdir -p /opt/program mv /opt/cm-5.9.0/ /opt/program/ ln -s /opt/program/cm-5.9.0/ /opt/cm
- 将CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel 和 CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel.sha1移动到/opt/cloudera/parcel-repo,这样安装时CM就能直接找到了
mv CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel.sha1 /opt/cloudera/parcel-repo/
- 将CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel.sha1重命名为CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel.sha(去掉结尾的1),非常重要。我试安装时,这点遗漏了,导致安装CDH的时候一直刷不出5.9版本,通过日志发现,没有manifest.json就会去下载,不能访问外网就报错了,但不影响安装CDH,还是mv一下吧。
mv manifest.json /opt/cloudera/parcel-repo/ cd /opt/cloudera/parcel-repo/ mv CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel.sha1 CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel.sha
- 修改配置文件中的server_host,编辑
/opt/cm/etc/cloudera-scm-agent/config.ini
server_host=master
- 将MysqL的JDBC驱动放入CM的lib目录下,下载地址http://dev.mysql.com/downloads/connector/j/,gz和zip都无所谓,最终要的是里面的jar包。解压获得mysql-connector-java-5.1.40-bin.jar上传到集群。
mv MysqL-connector-java-5.1.40-bin.jar /opt/cm/share/cmf/lib/
- 为CM创建数据库
/opt/cm/share/cmf/schema/scm_prepare_database.sh MysqL cm -hlocalhost -uroot -p123456 --scm-host localhost scm scm scm
- 为每个节点创建cloudera-scm用户,五台机均执行
useradd --system --home=/opt/cm/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
接下来其实可以直接在master上启动服务安装了,但因为其它节点没有CM,最后还是通过远程的yum在线下载再安装,我这设置了内部网络,其它节点是访问不了外网的,所以拷贝CM到其它节点进行完全离线安装。
8. 拷贝CM到每个节点
./scp.sh /opt/program/cm-5.9.0/ /opt/program/cm-5.9.0/ ln -s /opt/program/cm-5.9.0/ /opt/cm (每台机手动执行)
此时就静静的看着屏幕不停的拷贝吧!!!!!
9. 在master上启动CM的service服务
/opt/cm/etc/init.d/cloudera-scm-server start
- 在所有节点上面节点上启动CM的agent服务
/opt/cm/etc/init.d/cloudera-scm-agent start
service服务过程需要启动几分钟,这看机器性能,如果用netstat -apn|grep 7180
能够查看到端口占用,就可以用浏览器打开http://masterIP:7180/进行访问,登录用户名与密码分别为admin
到此基本上CM的安装启动己完成,接下来就可以用过WEB界面进行安装CDH了,哗啦哗啦,前面安装的步骤到不是很复杂,但安装的东西倒不少。
安装CDH
登陆
勾选然后继续
- 按需选择,我选择免费
- 继续
- 因为我们在节点上启动了agent,所以直接点“当前管理的主机”,此时当前管理主机有5个。如果节点上没有CM,只有master上有,这边可以在新主机下去搜索,例如192.168.2.[100-104],但这样最后从节点会去yum在线安装。
- 全部勾上,然后继续
- 选择版本,然后继续
- 开始安装了,等着吧
- 好了之后继续
- 全部是勾,完美!炒鸡兴奋呀
- 集群设置,按需选择
- 角色分配,按需分配,我这里选择默认,妈呀第一次不敢乱动
- 创建MysqL数据库并测试(按需创建,比如你没选oozie,就不用创建oozie的数据库,如下,其实我们己经在前面安装MysqL的时候己经建库了
眼看着就要成功了,期待的出现上面的结果,但在我的安装过程中三个数据都连不上标红,请允许我这个地方忘记截图了,一下子萌了,不过不会被这点困难所吓倒的,首先想到的就是看日志,server的日志目录放在/opt/cm/log/cloudera-scm-server
。主要有两个问题。
问题一,贴点日志吧
+ exec /opt/java/bin/java -Djava.net.preferIPv4Stack=true -Djava.security.egd=file:///dev/urandom -cp '/opt/program/cm-5.9.0/run/cloudera-scm-agent/process/11-HIVE-test-db-connection:/usr/share/java/mysql-connector-java.jar:/opt/program/cm-5.9.0/share/cmf/lib/postgresql-9.0-801.jdbc4.jar:/usr/share/java/oracle-connector-java.jar:/opt/program/cm-5.9.0/share/cmf/lib/*' com.cloudera.enterprise.dbutil.DbCommandExecutor db.properties 2017-02-22 16:48:25,662 INFO CommandPusher:com.cloudera.cmf.model.DbCommand: Command 30(HiveTestDatabaseConnection) has completed. finalstate:FINISHED,success:false,msg:Unable to connect to database on host 'master' from host 'master' using the credential provided. 2017-02-22 16:48:25,675 INFO CommandPusher:com.cloudera.cmf.service.AbstractOneOffHostCommand: Unsuccessful 'OozieTestDatabaseConnection' 2017-02-22 16:48:25,680 INFO CommandPusher:com.cloudera.cmf.service.AbstractDbConnectionTestCommand: Command exited with code: 4 2017-02-22 16:48:25,680 INFO CommandPusher:com.cloudera.cmf.service.AbstractDbConnectionTestCommand: + local JAVA8_HOME_CANDIDATES
其实从这个日志中也看不出来具体哪个地方错误,只知道是数据连不上,但是用show processlist
查看时又己经有很多连上了,排除是缺少jar包之类的原因,很有可能是配置问题,灵机一动,想到把配置界面上的主机名由master
改为127.0.0.1
,OK,立马好了。
问题二,贴点日志
Traceback (most recent call last): File "/opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/hue/build/env/bin/hue",line 12,in <module> load_entry_point('desktop==3.9.0','console_scripts','hue')() File "/opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/hue/desktop/core/src/desktop/manage_entry.py",line 65,in entry raise e django.core.exceptions.ImproperlyConfigured: Error loading MysqLdb module: libMysqLclient_r.so.16: cannot open shared object file: No such file or directory
日志提示找不到libMysqLclient_r.so.16
这个库包,要本原因是我刚开始安装MysqL时没有装MysqL-libs-5.1.66-2.el6_3.x86_64.rpm
,不过要注意对应的32还是64位哦。问题解决参考
环境测试
WEB界面集群环境配置好后,看到完成的界面很兴奋,来测试一下是否真正的能够跑个spark任务呢,可以运行spark中自带例子的jar包,简直就是贴心到位呀。
在master主机上运行以下命令,不过得先将原安装的root用户变成hdfs用户su hdfs
,这个用户在安装的过程中己经添加好了的。
spark-submit \ --master yarn-client \ --class org.apache.spark.examples.SparkPi \ --driver-memory 512m \ --executor-memory 512m \ --executor-cores 2 \ /opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/spark/examples/lib/spark-examples-1.6.0-cdh5.9.0-hadoop2.6.0-cdh5.9.0.jar
囧,报错了,看到希望似乎要绝望么:
17/02/23 11:18:07 INFO spark.SparkEnv: Registering OutputCommitCoordinator Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jersey/spi/container/servlet/ServletContainer at org.apache.spark.status.api.v1.ApiRootResource$.getServletHandler(ApiRootResource.scala:187) at org.apache.spark.ui.SparkUI.initialize(SparkUI.scala:74) at org.apache.spark.ui.SparkUI.<init>(SparkUI.scala:80) at org.apache.spark.ui.SparkUI$.create(SparkUI.scala:208) at org.apache.spark.ui.SparkUI$.createLiveUI(SparkUI.scala:150) at org.apache.spark.SparkContext.<init>(SparkContext.scala:485) at org.apache.spark.examples.SparkPi$.main(SparkPi.scala:29) at org.apache.spark.examples.SparkPi.main(SparkPi.scala) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:731) at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181) at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) Caused by: java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer at java.net.urlclassloader.findClass(urlclassloader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 17 more 17/02/23 11:18:07 INFO storage.diskBlockManager: Shutdown hook called
原因:
网上一找,有人说缺少jersey-server
包,有人说缺少jersey-bundle
包,不管了,试了再说,下载了jersey-server
包,打开一看里面目录结构都是不对的,pass掉转战另一个,果不其然缺少jersey-bundle-1.19.jar
包所致。
再一把,执行以下命令:
spark-submit \ --master yarn-client \ --class org.apache.spark.examples.SparkPi \ --driver-class-path /opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/spark/examples/lib/jersey-bundle-1.19.jar --driver-memory 512m \ --executor-memory 512m \ --executor-cores 2 \ /opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/spark/examples/lib/spark-examples-1.6.0-cdh5.9.0-hadoop2.6.0-cdh5.9.0.jar
静静的等待吧,哇,又发现一个坑,不说了贴错误代码如下
URI_BASES -> http://master:8088/proxy/application_1487876966425_0004),/proxy/application_1487876966425_0004 17/02/23 16:30:15 INFO ui.JettyUtils: Adding filter: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter 17/02/23 16:30:15 WARN servlet.Holder: java.lang.classNotFoundException: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter at java.net.urlclassloader.findClass(urlclassloader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at org.spark-project.jetty.util.Loader.loadClass(Loader.java:100) at org.spark-project.jetty.util.Loader.loadClass(Loader.java:79) at org.spark-project.jetty.servlet.Holder.doStart(Holder.java:107) at org.spark-project.jetty.servlet.FilterHolder.doStart(FilterHolder.java:90) at org.spark-project.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.spark-project.jetty.servlet.ServletHandler.initialize(ServletHandler.java:768) at org.spark-project.jetty.servlet.ServletHandler.updateMappings(ServletHandler.java:1357) at org.spark-project.jetty.servlet.ServletHandler.setFilterMappings(ServletHandler.java:1393) at org.spark-project.jetty.servlet.ServletHandler.addFilterMapping(ServletHandler.java:1113) at org.spark-project.jetty.servlet.ServletHandler.addFilterWithMapping(ServletHandler.java:979) at org.spark-project.jetty.servlet.ServletContextHandler.addFilter(ServletContextHandler.java:332) at org.apache.spark.ui.JettyUtils$$anonfun$addFilters$1$$anonfun$apply$6.apply(JettyUtils.scala:215) at org.apache.spark.ui.JettyUtils$$anonfun$addFilters$1$$anonfun$apply$6.apply(JettyUtils.scala:215) at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59) at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47) at org.apache.spark.ui.JettyUtils$$anonfun$addFilters$1.apply(JettyUtils.scala:215) at org.apache.spark.ui.JettyUtils$$anonfun$addFilters$1.apply(JettyUtils.scala:193) at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33) at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:108) at org.apache.spark.ui.JettyUtils$.addFilters(JettyUtils.scala:193) at org.apache.spark.scheduler.cluster.YarnSchedulerBackend$$anonfun$org$apache$spark$scheduler$cluster$YarnSchedulerBackend$$addWebUIFilter$3.apply(YarnSchedulerBackend.scala:98)
一看又是ClassNotFoundException错误,一般都是没有相对应的jar包,或者有jar包没有放到加载的路径上去,上百度一搜这个类位于hadoop-yarn-server-web-proxy这个JAR中,首先到机器中find查找,确实没有,就要去下载。下载很方便,现在一般都是Maven项目构建,网上有一个超级大的Maven仓库http://mvnrepository.com/,直接根据名字进行搜索下载,实在是太方便,唯一有点遗憾是电脑不能直接上网,哈哈。
最后一把,执行命令如下:
spark-submit \ --master yarn-client \ --class org.apache.spark.examples.SparkPi \ --driver-class-path /opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/spark/examples/lib/jersey-bundle-1.19.jar:/opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/spark/examples/lib/hadoop-yarn-server-web-proxy-2.4.0.2.1.4.0-632.jar \ --driver-memory 512m \ --executor-memory 512m \ --executor-cores 2 \ /opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/spark/examples/lib/spark-examples-1.6.0-cdh5.9.0-hadoop2.6.0-cdh5.9.0.jar
可以将这两个依赖包放到任意一个路径,这样命令不会那么长,难看,看屏幕输出计算PI的结果如下3.13858
,与想象中的3.1415926
不一样呀,哈哈,以后再解释。
17/02/23 16:32:46 INFO cluster.YarnScheduler: Removed TaskSet 0.0,whose tasks have all completed,from pool 17/02/23 16:32:46 INFO scheduler.DAGScheduler: ResultStage 0 (reduce at SparkPi.scala:36) finished in 8.070 s 17/02/23 16:32:46 INFO scheduler.DAGScheduler: Job 0 finished: reduce at SparkPi.scala:36,took 8.560082 s Pi is roughly 3.13858 17/02/23 16:32:46 INFO ui.SparkUI: Stopped Spark web UI at http://172.16.18.150:4040 17/02/23 16:32:47 INFO cluster.YarnClientSchedulerBackend: Shutting down all executors 17/02/23 16:32:47 INFO cluster.YarnClientSchedulerBackend: Interrupting monitor thread 17/02/23 16:32:47 INFO cluster.YarnClientSchedulerBackend: Asking each executor to shut down
其它问题
利用spark-shell启动时出现如下,不过首先得切换到hdfs用户,这个用户在安装过程己创建好。
java.lang.NoClassDefFoundError: com/sun/jersey/spi/container/servlet/ServletContainer at org.apache.spark.status.api.v1.ApiRootResource$.getServletHandler(ApiRootResource.scala:187) at org.apache.spark.ui.SparkUI.initialize(SparkUI.scala:74) at org.apache.spark.ui.SparkUI.<init>(SparkUI.scala:80) at org.apache.spark.ui.SparkUI$.create(SparkUI.scala:208) at org.apache.spark.ui.SparkUI$.createLiveUI(SparkUI.scala:150) at org.apache.spark.SparkContext.<init>(SparkContext.scala:485) at org.apache.spark.repl.SparkILoop.createSparkContext(SparkILoop.scala:1022)
原因是由于jersey-bundle-1.19.jar
没有加入到加载路径中去,编辑/opt/cloudera/parcels/CDH/lib/spark/conf/classpath.txt
添加jar包的绝对路么径,在master机器即可。
内存配置参数不够如下
ERROR spark.SparkContext: Error initializing SparkContext. java.lang.IllegalArgumentException: required executor memory (1024+384 MB) is above the max threshold (1024 MB) of this cluster! Please check the values of 'yarn.scheduler.maximum-allocation-mb' and/or 'yarn.nodemanager.resource.memory-mb'. at org.apache.spark.deploy.yarn.Client.verifyClusterResources(Client.scala:284) at org.apache.spark.deploy.yarn.Client.submitApplication(Client.scala:140)
这个问题折腾我好久,一直定位为yarn配置文件的配置问题,但不知道哪个具体的yarn-site.xml改了生效,尝试了很多次/opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/spark/conf/yarn-conf/yarn-site.xml
这个配置文件未果,后来在WEB配置界面的YARN配置选项中,通过查找yarn.scheduler.maximum-allocation-mb
项发生真有耶,把报错的两项均修改为2G,保存配置,重启过期配置,再次执行spark-shell
命令成功。原来人家早就考虑到基本的配置操作在WEB上面,自己干嘛还去机器中改呀,呵呵,还提供了你更改配置与原有配置的对比,类似SVN提交记录一样。
参考教程
破击手http://www.cnblogs.com/pojishou/archive/2017/01/12/6267616.html
Cloudera Manager 5 和 CDH5 本地(离线)安装指南http://www.aboutyun.com/thread-9086-1-1.html
http://blog.csdn.net/wumiqing1/article/details/53671045 MysqLclient问题
https://community.cloudera.com/t5/Cloudera-Manager-Installation/Deploy-Client-Configuration-failed-at-upgrade-to-CDH5-4-1-using/m-p/27763 解决deploy client configuration 失败问题
http://www.aboutyun.com/thread-12431-1-1.html yarn无法启动
CDH在Centos 7离线安装
由于本人原来都是采用在线安装方式,使用公司港台服务器代理,速度还是很可观的。不过最近要求在Centos 7上离线安装,有点坑,网上的很多都是抄来抄去,安装到一半可能就走不下去,这里是本人亲测,遇到的问题都一一说明并且解决掉。这里趟了一遍,希望对读者有帮助。不说废话,进入主题:
Cloudera官网给出三种安装方式,我们采用PathC,使用下载好的包进行安装。我这里只使用本地虚拟机来进行安装说明:
机器本身环境配置(所有机器):
设置本身机器ip
首先查看自身机器网卡,我用的NAT方式:
[root@localhost Desktop]# ifconfig
那么看到eno16777736为我们的外部网卡,我们接下来修改他的ip:
[root@localhost Desktop]# vi/etc/sysconfig/network-scripts/ifcfg-eno16777736
我们会看到如下:
然后我们改为静态ip:
此处的网关需要查看自己网段的网关。然后我们重启网路:
[root@localhostDesktop]# systemctl restart network
再次查看网络:
[root@localhost Desktop]# ifconfig
没有问题,已经成功。
更改DNS
如果我们现在运行如下命令会发现我们不识别baidu:
[root@localhost Desktop]# ping www.baidu.com
ping: unkNown host www.baidu.com
这说明我们的DNS没有设置好,修改相应配置:
[root@localhost Desktop]# vi /etc/resolv.conf正常里面是空的,加入:
nameserver 8.8.8.8
nameserver 8.8.4.4
保存退出,然后重启网络然后尝试:
更改成功
更改主机名字(看自己意愿,我假设分别是wm001,wm002,wm003):
接下来我们更改主机名字。首先我们输入如下命令,查看本机主机名字:
我们需要更改名字:
[root@localhost Desktop]# vi /etc/hostname
然后把原来名字去掉,改为:
wm001
保存退出,再次查看:
更改yum源:
Yum原本的源都在国外,更新特别浪费时间,我们改为阿里源:
首先我们将原来的源进行备份:
[root@localhost Desktop]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup |
接下来我们用阿里源进行替换:
[root@localhost Desktop]# wget -O/etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo接下来我们makecache一下,然后更新包:
[root@localhost Desktop]# yum makecache
[root@localhost Desktop]# yum update
过程可能会很长,y输入然后一直继续。
至此,yum源更新完毕。
Cloudera 安装开始:
Cloudera manager 选择
首先考虑到我们集群中所用的为Centos 7,所以Cloudera Manager我选的为最新版本:
Cloudera Manager 5.10.0,主要是根据官网文档选择,下载地址为:
http://archive.cloudera.com/cm5/repo-as-tarball/
如下贴出该版本支持的Centos 各系统:
CDH选择
由于我们的cloudera manager已经选择了,所以CDH版本也可以确定:
CDH-5.10.0-1.cdh5.10.0.p0.41-el7.parcel,至于4或者5都可以:
下载地址为:http://archive.cloudera.com/cdh5/
JDK选择
所以不管java的版本是1.7还是1.8,只要符合上述要求即可。Centos 7自带java,我们查看一下版本:
Cloudera官方给出:
所以我们需要卸载本机自带的openJDK,安装我们自己的JDK到/usr/java/目录下。我们进行如下操作:
首先我们查看安装的Java并且卸载该java(所有机器):
现在java已经卸载干净,我们上oracle官网,下载我们所需的java版本:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
然后安装我们的java:
可以看到,我们安装的java被安装到了/usr/java目录下,并且创建了一个latest链接文件,然后我们把java的目录放到环境中去:
至此,java环境准备完毕。
配置SSH
一般centos 7默认安装了openssh,我们在wm001上创建密匙,这里需要说明一下,根据官网说明:
我们使用root用户创建密匙(所有机器):
接着我们需要修改hosts文件,依据Cloudera官网:
所以我们要在每台机器的hosts文件中加入其余机器的信息,我们现在只在wm001中加入,稍后会写相应的脚本来传递到各个机器上。在wm001上改为如下:
127.0.0.1localhost
::1localhost
192.168.75.128 wm001
192.168.75.129 wm002
192.168.75.130 wm003
然后我们在wm001上创建文件autossh.sh脚本,然后编辑:
#!/bin/bash
# 注意此处用于主机已经生成了ssh-key
password='moon'
auto_ssh(){
/usr/bin/expect <<-EOF
set time 30
spawn ssh-copy-id -i $HOME/.ssh/id_rsa.pub$1
expect {
"*yes/no" { send"yes\r"; exp_continue }
"*password:" { send"$password\r" }
}
expect eof
EOF
}
for i in $@;do
auto_ssh $i
done
## 至此所有互信已经完成,接下来开始复制host文件
for i in $@;do
scp/etc/hosts root@$i:/etc/hosts
#scp/shellscripts/hello root@$i:/usr/local
done
脚本中的password是各机器root用户登陆密码。
然后我们赋予可执行权限:
由于脚本使用了expect包,而centos默认不安装,所以此时我们需要安装一下:
然后我们运行脚本:
显示成功,我们测试一下:
如上说明我们已经把各机器ssh成功,并且hosts文件我们也已经拷贝成功。
至此,SSH配置完毕。
安装配置MysqL
根据官网所述:
我们需要一个外部数据库来存储集群的信息,我们使用MysqL。版本我们采用:5.6,包采用:
MysqL-community-release-el7-5.noarch.rpm。因为根据官方,5.6是支持的:
下载地址为:http://repo.MysqL.com/MysqL-community-release-el7-5.noarch.rpm
然后我们开始安装MysqL的rpm包,此处注意,我们只在wm001上安装:
然后我们更新yum:
然后安装MysqL-server:
之所以我们不直接使用yum是因为centos7 不提供MysqL的版本,所以需要我们手动下载导入:
接下来设置MysqL开机启动:
[root@wm001 ~]# systemctl enable MysqLd.service |
然后启动MysqL:
[root@wm001 ~]# systemctl start MysqLd |
接下来,设置root用户密码:
[root@wm001 ~]# MysqLadmin -u root password 'wordemotion' |
防火墙等设置:
首先官方文档中描述:
[root@wm001 ~]# systemctl stop firewalld.service [root@wm001 ~]# vim /etc/selinux/config |
NTP设置
由于机器都是虚拟机,时间相同,不设置。此跳过。(安装公司集群时,务必设置)
Cloudera Manager 安装
现在我们要正式开始安装cloudera manger了,首先把我们事先下载好的cloudera manager上传到各个机器:
然后我们把文件解压到/opt目录下(每台机器都如此):
tar -zxvf cloudera-manager-centos7-cm5.10.0_x86_64.tar.gz -C /opt/ |
接下来我们要在所有的机器上配置主机的名字:
vim /opt/cm-5.10.0/etc/cloudera-scm-agent/config.ini |
接下来我们要在所有机器上创建用户,具体原因如官方解释:
运行命令如下:
useradd --system --home-dir /opt/cm-5.10.0/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm |
接下来我们要为cloudera manager建立数据库,不过在此之前我们需要下载msyql数据库驱动下载地址:http://dev.mysql.com/downloads/connector/j/
我们解压把文件上传到/opt/cm-5.10.0/share/cmf/lib/目录下:
cp mysql-connector-java-5.1.40-bin.jar /opt/cm-5.10.0/share/cmf/lib/ scp mysql-connector-java-5.1.40-bin.jar wm002:/opt/cm-5.10.0/share/cmf/lib/ |
这样之后我们开始创建库,cm给了脚本自动创建数据库等,所以我们只需要运行该脚本即可:
/opt/cm-5.10.0/share/cmf/schema/scm_prepare_database.sh MysqL cm -hlocalhost -uroot -pwordemotion --scm-host localhost scm word@emotion |
其中wordemotion 是数据库的root用户密码,而后面的word@emotion是新的用户scm的密码。
现在按照原理数据库应该已经有了该库,我们查看一下:
没有问题,数据库已经成功创建。
启动Cloudera Manager
现在我们开始启动cloudera manager,首先在wm001上启动server:
/opt/cm-5.10.0/etc/init.d/cloudera-scm-serverstart
然后我们在所有机器上启动agent:
/opt/cm-5.10.0/etc/init.d/cloudera-scm-agentstart
我们在浏览器查看:
http://192.168.75.128:7180
出现如下图所示证明安装成功,默认账号密码都是admin:
登陆,我们进入到如下界面,先不要着急点击继续:
CDH安装
我们在下载CDH的时候会有相对应的sha文件,我们这里是:
CDH-5.10.0-1.cdh5.10.0.p0.41-el7.parcel.sha1
我们需要重命名该文件为:
CDH-5.10.0-1.cdh5.10.0.p0.41-el7.parcel.sha
然后把
CDH-5.10.0-1.cdh5.10.0.p0.41-el7.parcel与上面的sha文件一起放入到/opt/cloudera/parcel-repo/目录下(只是主机如此操作):
mv CDH-5.10.0-1.cdh5.10.0.p0.41-el7.parcel /opt/cloudera/parcel-repo/ |
继续Cloudera Manager安装
我们在刚才的网页选择接受然后继续:
这里我们选择免费版,一般中小型公司都选择免费版,完全能够解决绝大多数业务所需。继续:
继续:
在这里我们能够看到三个主机,这也就说明只要我们的所有agent成功启动的话,我们就可以在这里看到所有的机器。
选中所有机器继续:
保持默认,继续:
到了此页面我发现集群卡住不动。
发现此问题我首先想到的是去看日志:
路径是:/opt/cm-5.10.0/log/cloudera-scm-agent
[root@wm001 cloudera-scm-agent]# tail -n 300 cloudera-scm-agent.log |
我们发现确实agent发生错误,错误如下:
如上错误信息也就说明了用split去切分的时候,字段>4个,所以报错。
我追踪脚本找到报错位置:
然后我们找到调用的位置:
注释详细的说明了该方法是用update-alternatives找到指定名字的所有alternatives。那么我不知道具体要找的是哪个名字,但是我知道指定有一个名字用空格切分长度大于4。去国外的网站也查了,很多人遇到这个问题,使用如下脚本进行定位:
那么我们定位到了是因为这个包造成的。那么两种方案:
一种是把这个包卸载:
alternatives --display libjavaplugin.so.x86_64 alternatives --remove libjavaplugin.so.x86_64 /usr/lib64/IcedTeaPlugin.so |
一种是更改此脚本文件,关闭server和agent,重新启动:
/opt/cm-5.10.0/etc/init.d/cloudera-scm-agent stop(所有机器) /opt/cm-5.10.0/etc/init.d/cloudera-scm-stop stop |
先把原来的脚本进行备份:
cp /opt/cm-5.10.0/lib64/cmf/agent/build/env/lib/python2.7/site-packages/cmf-5.10.0-py2.7.egg/cmf/client_configs.py ./client_configs.py.bak |
然后把该脚本覆盖老脚本,同时发往各个机器:
scp client_configs.py wm002:/opt/cm-5.10.0/lib64/cmf/agent/build/env/lib/python2.7/site-packages/cmf-5.10.0-py2.7.egg/cmf/client_configs.py |
这样之后我们启动server和agent:
/opt/cm-5.10.0/etc/init.d/cloudera-scm-server start /opt/cm-5.10.0/etc/init.d/cloudera-scm-agent start |
然后我们打开网页,依照之前的操作到上次卡住的地方,如今已经能够正常运行了,我们等待一段时间即可:
等待时间可能会偏长,等全部成功如下图时,继续:
这时需要等待一段时间:
出现如图所示时,点击完成:
当下面的内核出现的时候,我们选择自定义(hdfs,spark,yarn,zookeeper),根据需求自定义,我这里只是演示而已:
后我们点击继续:
下面的页面一般建议默认文件夹,最后的zk如果机器充裕的话建议三个,我这三台机器配置较差,就用了一个,然后我们继续:
出现如下页面时,我们等待审核:
然后默认路径继续:
然后集群开始为我们启动各个组件,时间随着机器配置而定,如果机器配置很烂的话,很有可能会启动失败。
启动成功后我们继续如下图:
然后点击完成:
然后我们进入到管理界面,途中的警告是因为我磁盘和内存太小导致的,不影响使用,我们集群cpu和IO的监控也已经为我们启动。
至此,我们的生产模式离线安装成功完成。
【注】:最后出现的问题个人感觉可能是centos版本导致的,我的虚拟机就是centos 7.0,是不在cdh支持的列表中的,所以出现了那个问题。同样也有可能我们使用的最新的Cloudera Manager,目前他不够完善导致的,不过目前可以通过修改脚本而不用改动机器,个人认为该问题不算集群风险。
CentOS 64bit 下安装Flashplayer
64位的centos 6 下,安装firefox的flash插件:
1,下载:
打开网址 http://labs.adobe.com/downloads/flashplayer11-2.html
里面有最新的flash插件版本,比如
mkdir fp && cd fp
wget http://download.macromedia.com/pub/labs/flashplatformruntimes/flashplayer11-2/flashplayer11-2_p1_install_lin_64_102611.tar.gz
2,配置:
[simonsun@openos fp]$ tar xvzf flashplayer11-2_p1_install_lin_64_102611.tar.gz
libflashplayer.so
usr/
usr/bin/
usr/share/
usr/share/pixmaps/
usr/share/pixmaps/flash-player-properties.png
usr/share/kde4/
usr/share/kde4/services/
usr/share/kde4/services/kcm_adobe_flash_player.desktop
usr/share/applications/
usr/share/applications/flash-player-properties.desktop
usr/share/icons/
usr/share/icons/hicolor/
usr/share/icons/hicolor/32x32/
usr/share/icons/hicolor/32x32/apps/
usr/share/icons/hicolor/32x32/apps/flash-player-properties.png
usr/share/icons/hicolor/22x22/
usr/share/icons/hicolor/22x22/apps/
usr/share/icons/hicolor/22x22/apps/flash-player-properties.png
usr/share/icons/hicolor/24x24/
usr/share/icons/hicolor/24x24/apps/
usr/share/icons/hicolor/24x24/apps/flash-player-properties.png
usr/share/icons/hicolor/16x16/
usr/share/icons/hicolor/16x16/apps/
usr/share/icons/hicolor/16x16/apps/flash-player-properties.png
usr/share/icons/hicolor/48x48/
usr/share/icons/hicolor/48x48/apps/
usr/share/icons/hicolor/48x48/apps/flash-player-properties.png
usr/lib/
usr/lib/kde4/
[simonsun@openos fp]$ sudo cp libflashplayer.so /usr/lib64/mozilla/plugins/
[simonsun@openos fp]$ sudo chmod 755 /usr/lib64/mozilla/plugins/libflashplayer.so
安装成功后,重启firefox ,在firefox的地址栏目里输入about:plugins,会显示下面结果,表明安装成功。
我们今天的关于centos系统下离线安装flask和linux离线安装flask的分享已经告一段落,感谢您的关注,如果您想了解更多关于ansible2.9.18 centos7 x86_64系统下的完全rpm离线安装、CDH 5.9 CentOS 6.5 离线安装部署、CDH在Centos 7离线安装、CentOS 64bit 下安装Flashplayer的相关信息,请在本站查询。
本文标签: