踩了很多坑,具体多少我都忘记了。搞完之后弄个帖子一是记录,二是分享。
之所以选择离线安装,是因为公司的网络不太稳定,单下个CM都要好久,更别提后面的CDH了,而且还容易网络中断。
准备工作(一些简单且容易百度到的,就不赘述了):
1. 所有主机的/etc/hosts 文件的 ip 主机名绑定
2.所有主机之间免密码登录
3. 配置ntp服务,主节点对外同步时间,其他节点向主节点同步时间。
在主节点上
server 120.24.166.46 # 阿里云NTP Server
server 127.127.1.0 # 如果公网NTP不可用时,将使用Local时间作为NTP服务提供给NTP Client
restrict 10.0.0.0 mask 255.255.254.0 nomodify
在从节点上直接 server master(主机名或者ip地址)就可以了。
4.安装mysql 和jdbc驱动包
apt-get install mysql-server libmysql-java
这里是官网的关于mysql配置的链接.
https://www.cloudera.com/documentation/enterprise/latest/topics/cm_ig_mysql.html#cmig_topic_5_5
安装后就是在 /etc/mysql/conf.d/下面新建 cloudera,将官网推荐的mysql配置copy过来就好了。(这里需要注意的是innodb的pool size 是4G)
官网推荐配置如下:
5.下载安装包
在这里下载对应系统CDH的parcel包和sha1结尾的文件,还有manifest.json
http://archive.cloudera.com/cdh5/parcels/5.13.1/
CDH-5.13.1-1.cdh5.13.1.p0.2-trusty.parcel
CDH-5.13.1-1.cdh5.13.1.p0.2-trusty.parcel.sha1
manifest.json
在这里下载对应系统的CM包
http://archive.cloudera.com/cm5/cm/5/
6.参照官网的一些创建目录,用户的操作
在所有节点上:
mkdir /opt/cloudera-manager
tar xzf cloudera-manager*.tar.gz -C /opt/cloudera-manager
useradd --system --home=/opt/cloudera-manager/cm-5.6.0/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
在主节点上:
mkdir /var/lib/cloudera-scm-server
chown cloudera-scm:cloudera-scm /var/lib/cloudera-scm-server
mkdir -p /opt/cloudera/parcel-repo
chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo
在从节点上:
mkdir -p /opt/cloudera/parcels
chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
将下载好的 CDH的三个文件放在 /opt/cloudera/parcel-repo 下,执行 mv CDH-5.13.1-1.cdh5.13.1.p0.2-trusty.parcel.sha1 CDH-5.13.1-1.cdh5.13.1.p0.2-trusty.parcel.sha
7.在主节点上下载依赖包(这里给出的是ubuntu系统的依赖包)
ant apache2 debhelper gcc libfuse2 libsasl2-modules libsasl2-modules-gssapi-mit libsqlite3-0 libssl-dev libxslt1.1 lsb-base make openssl perl psmisc python-dev python-mysqldb python-psycopg2 python-setuptools rpcbind swig zlib1g
这里是官网的各个系统的依赖包列表:
https://www.cloudera.com/documentation/enterprise/latest/topics/cm_ig_install_path_c.html#install_package_dependencies
8. 差点忘了所有节点配置jdk
下载解压啥的就不说了,修改/etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile 使修改即时生效。如果仍然每次打开新的窗口都没有 java 命令,那么在 ~/.bashrc 把这句加在最后。另外这里有一个坑,注意,CM找Java 不是从这里找的,它是按这个文件的配置来找的Java: /opt/cloudera-manager/cm-5.13.1/lib/cmf/service/common/cloudera-config.sh
它里面有这么一段:
local JAVA8_HOME_CANDIDATES=(
'/usr/java/jdk1.8'
'/usr/java/jre1.8'
'/usr/lib/jvm/j2sdk1.8-oracle'
'/usr/lib/jvm/j2sdk1.8-oracle/jre'
'/usr/lib/jvm/java-8-oracle'
)
如果在上面的路径没有找到,就会在后面安装的时候报错JAVA_HOME没有配置。所以要将实际的JAVA_HOME目录做一个软连接过去。ln -s /usr/local/jdk_1.8.0 /usr/java/jdk1.8 (记得创建一下/usr/java/目录)
9.初始化数据库
./opt/cloudera-manager/cm-5.13.1/share/cmf/schema/scm_prepare_database.sh mysql -hlocalhost -uroot -p123456 --scm-host localhost scm scm scm
创建数据库和账户:
--hive数据库
create database metastore 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;
对每一个库授权账户
grant all on db.* to username@'%' identified by 'password';
在这里关机,保存镜像吧大兄弟,相信我,不保存你会后悔的!!!
正式开始:
1./opt/cloudera-manager/cm-5.13.1/etc/init.d/cloudera-scm-server start
2./opt/cloudera-manager/cm-5.13.1/etc/init.d/cloudera-scm-agent start
后面我遇到的需要注意的是有时候它运行主机检查的时候提示某台主机时间不同步的时候,自己去主机上验证一下,如果没有问题就resume一下就会检查通过。
master机的内存要大于4G,小于4G就不要装所有服务,保不准会有什么幺蛾子。
其实最麻烦的是正式开始之后进入页面安装第一次不成功,第二次再去操作的时候最好还原镜像。不然超级麻烦。我遇到过的列举一下:选择主机的时候某一台主机出现两次,启动spark服务启动了一天一夜还没有启动,也没有报错,格式化tmp目录失败,已经存在该目录(然而我怎么找也找不到这个目录).....我的解决办法就是还原镜像。