uname -a 查看服务器版本
Linux datanode1 3.10.0-693.2.2.el7.x86_64 #1 SMP Tue Sep 12 22:26:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
选择对应的CDH 安装包
http://archive.cloudera.com/cm5/cm/5/
http://archive.cloudera.com/cdh5/parcels/5.14/
lsb_release -a 查看系统版本,选择对应的Cloudera Manager
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.4.1708 (Core)
Release: 7.4.1708
Codename: Core
安装上传下载文件程序
yum -y install lrzsz
wget 是一个从网络上自动下载文件的自由工具
wget 资源链接
CM的安装:
1.网络配置(所有节点)
1.1修改hostname
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=sparkmaster
1.2. 修改 ip 与主机名的对应关系
vi /etc/hosts
10.10.0.126 node1
10.10.0.8 node2
10.10.0.127 node3
2. 设置 ssh 无密码登陆
在主节点上执行
1.ssh-keygen -t rsa
一路回车,生成无密码的密钥对。
将公钥添加到认证文件中:
2.cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
,并设置 authorized_keys 的访问权限:
chmod 600 ~/.ssh/authorized_keys
3.scp 文件到所有 datenode 节点:
4.scp ~/.ssh/authorized_keys root@nodexx:~/.ssh/
注意:这里需要将各节点之间的免密登录都进行配置,包括自己到自己的免密登录
2.2JDK 环境安装
#上传 jdk 安装包
jdk-8u65-linux-x64.tar.gz
#解压安装包
tar zxvf jdk-8u65-linux-x64.tar.gz -C /opt
#配置环境变量 /etc/profile
export JAVA_HOME=/opt/jdk1.8.0_65
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#刷新配置
source /etc/profile
备注:
最好选择rpm软件包的安装方式好处有二。
第一:rpm安装的默认路径即是CDH安装时会去寻找jdk的路径,否则在CM的安装中会报错。
(如果用tar包手动的方式安装可以创建软连接 进入/usr/java目录[没有就手动创建之]:
ln -s你的jdk安装目录 /usr/java/default,运用此方法别忘记手动配置环境变量)
第二:rpm安装会自动创建环境变量。
2.3 安装mysql
a. 检查MySQL及相关RPM包,是否安装,如果有安装,则移除(rpm –e 名称)
1 [root@localhost ~]# rpm -qa | grep -i mysql
2 mysql-libs-5.1.66-2.el6_3.x86_64
3 [root@localhost ~]# yum -y remove mysql-libs*
b. 下载Linux对应的RPM包,如:CentOS6.4_64对应的RPM包,如下:
1 [root@localhost rpm]# ll
2 total 74364
3 -rw-r--r--. 1 root root 18442536 Dec 11 20:19 MySQL-client-5.6.15-1.el6.x86_64.rpm
4 -rw-r--r--. 1 root root 3340660 Dec 11 20:06 MySQL-devel-5.6.15-1.el6.x86_64.rpm
5 -rw-r--r--. 1 root root 54360600 Dec 11 20:03 MySQL-server-5.6.15-1.el6.x86_64.rpm
c. 安装MySQL
1 [root@localhost rpm]# rpm -ivh MySQL-server-5.6.15-1.el6.x86_64.rpm
2 [root@localhost rpm]# rpm -ivh MySQL-devel-5.6.15-1.el6.x86_64.rpm
3 [root@localhost rpm]# rpm -ivh MySQL-client-5.6.15-1.el6.x86_64.rpm
4 #修改配置文件位置
5 [root@localhost rpm]# cp /usr/share/mysql/my-default.cnf /etc/my.cnf
d. 初始化MySQL及设置密码
1 [root@localhost rpm]# /usr/bin/mysql_install_db
2 [root@localhost rpm]# service mysql start
3 [root@localhost rpm]# cat /root/.mysql_secret #查看root账号密码
4 # The random password set for the root user at Wed Dec 11 23:32:50 2013 (local time): qKTaFZnl
5 [root@localhost ~]# mysql -uroot –pqKTaFZnl
6 mysql> SET PASSWORD = PASSWORD('123456'); #设置密码为123456
7 mysql> exit
8 [root@localhost ~]# mysql -uroot -p123456
e. 允许远程登陆
1 mysql> use mysql;
2 mysql> select host,user,password from user;
3 +-----------------------+------+-------------------------------------------+
4 | host | user | password |
5 +-----------------------+------+-------------------------------------------+
6 | localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
7 | localhost.localdomain | root | *1237E2CE819C427B0D8174456DD83C47480D37E8 |
8 | 127.0.0.1 | root | *1237E2CE819C427B0D8174456DD83C47480D37E8 |
9 | ::1 | root | *1237E2CE819C427B0D8174456DD83C47480D37E8 |
10 +-----------------------+------+-------------------------------------------+
11
12 mysql> update user set password=password('123456') where user='root';
13 mysql> update user set host='%' where user='root' and host='localhost';
14 mysql> flush privileges;
15 mysql> exit
f. 设置开机自启动
1 [root@localhost ~]# chkconfig mysql on
2 [root@localhost ~]# chkconfig --list | grep mysql
3 mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
g. MySQL的默认安装位置
1 /var/lib/mysql/ #数据库目录
2 /usr/share/mysql #配置文件目录
3 /usr/bin #相关命令目录
4 /etc/init.d/mysql #启动脚本
修改字符集和数据存储路径
配置/etc/my.cnf文件,修改数据存放路径、mysql.sock路径以及默认编码utf-8.
1 [client]
2 password = 123456
3 port = 3306
4 default-character-set=utf8
5 [mysqld]
6 port = 3306
7 character_set_server=utf8
8 character_set_client=utf8
9 collation-server=utf8_general_ci
10 #(注意linux下mysql安装完后是默认:表名区分大小写,列名不区分大小写; 0:区分大小写,1:不区分大小写)
11 lower_case_table_names=1
12 #(设置最大连接数,默认为 151,MySQL服务器允许的最大连接数16384; )
13 max_connections=1000
14 [mysql]
15 default-character-set = utf8
5. 关闭防火墙和 SELinux
注意: 需要在所有的节点上执行,因为涉及到的端口太多了,
临时关闭防火墙是为了安装 起来更方便,安装完毕后可以根据需要设置防火墙策略,保证集群安全。
关闭防火墙:
1. service iptables stop (临时关闭)
2. chkconfig iptables off (重启后生效)
关闭 SELINUX(实际安装过程中发现没有关闭也是可以的,
不知道会不会有问题,还需进 一步进行验证):
1. setenforce 0 (临时生效)
2. 修改 /etc/selinux/config 下的 SELINUX=disabled (重启后永久生效)
四、 安装 CM Server 和 Agent
1. 主节点解压安装
cloudera manager 的目录默认位置在/opt 下,
解压:
1. tar xzvf cloudera-manager*.tar.gz
2. 将解压后的 cm-5.1.3 和 cloudera 目录放到/opt 目录下。
2. 为 Cloudera Manager 5建立数据库
首先需要去 MySql 的官网下载 JDBC 驱动,
http://dev.mysql.com/downloads/connector/j/,解压后,
找到 mysql-connector-java5.1.33-bin.jar,放到/opt/cm-5.1.3/share/cmf/lib/中。
在主节点初始化 CM5 的数据库:
1. /opt/cm-5.14.4/share/cmf/schema/scm_prepare_database.sh mysql cm hlocalhost -uroot -proot --scm-host localhost scm scm scm
3. Agent配置
修改/opt/cm-5.14.4/etc/cloudera-scm-agent/config.ini 中的 server_host 为主节点的主机 名。
同步 Agent 到其他节点
1. scp -r /opt/cm-5.14.4 root@namenode:/opt/
4. 在所有节点创建 cloudera-scm 用户
1. useradd --system --home=/opt/cm-5.14.4/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
5. 准备 Parcels,用以安装 CDH5
将 CHD5 相关的 Parcel 包放到主节点的/opt/cloudera/parcel-repo/目录中:
CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel
CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha1
manifest.json
最后将 CDH-5.15.1-1.cdh5.15.1.p0.4-xxx.parcel.sha1,
重命名为 CDH-5.15.1-1.cdh5.15.1.p0.4-xxx.parcel.sha,这点必须注意,
否则,系统会重新下载 CDH-5.15.1-1.cdh5.15.1.p0.4-xxx.parcel 文件。
6. 启动 CM Server Agent
/opt/cm-5.14.4/etc/init.d/cloudera-scm-server start
/opt/cm-5.14.4/etc/init.d/cloudera-scm-agent start (所有Agent节点)
停止CM
/opt/cm-5.14.4/etc/init.d/cloudera-scm-server stop
/opt/cm-5.14.4/etc/init.d/cloudera-scm-agent stop
CDH5.X完全卸载步骤
#by tinson
2019-04-10
-
关闭集群中的所有服务。
这个可以通过clouder manger 主页关闭集群。 -
卸载
[root@uat1 ~]# /opt/cm-5.14.4/etc/init.d/cloudera-scm-agent stop Stopping cloudera-scm-agent: [ OK ]
在当初安装时的server节点停止server服务
service cloudera-scm-server stop
[root@uat4 nameservice1]# /opt/cm-5.14.4/etc/init.d/cloudera-scm-stop stop
Stopping cloudera-scm-server: [ OK ]
---------------------
查看相关进程,如果在CM界面中未完成服务的关闭,可以用以下命令来强行关闭相关进程
#关闭相关进程
ps -ef |grep cloudera
#ps -ef |grep cloudera |grep -v grep |awk '{print $2}' |xargs kill
for i in hdfs mapred cloudera-scm hbase hue zookeeper oozie hive impala flume; do ps -ef |grep ${i} |grep -v grep |awk '{print $2}'; done
ps -ef |grep cmf
#查看相关进程
for u in hdfs mapred cloudera-scm hbase hue zookeeper oozie hive impala flume; do echo $(ps -u $u -o pid=); done
kill 掉相关进程
for u in hdfs mapred cloudera-scm hbase hue zookeeper oozie hive impala flume; do sudo kill $(ps -u $u -o pid=); done
删除CM相关的软件
#卸载cloudera-manager-server
yum remove cloudera-manager-daemons cloudera-manager-server -y
#卸载cloudera-manager-agent
yum remove cloudera-manager-agent cloudera-manager-daemons -y
#用匹配方式删除
yum remove 'cloudera-manager-*'
#清除缓存
yum clean all
建议在卸载CDH前,先备份或转移集群上的用户数据。以下命令应在集群中所有Agent主机执行;以下路径是集群的默认安装配置,如果有所修改,请按修改后的路径操作。
for data in data data1 data2 data3 data4 data5 data6 data7 data8 data9 data10 data11 data12 data13; do rm -rf /${data}/dfs /${data}/impala /${data}/yarn /${data}/kudu; done
rm -rf /var/run/hdfs-sockets
rm -rf /usr/lib/hue
rm -rf /usr/bin/hadoop* /usr/bin/zookeeper* /usr/bin/hbase* /usr/bin/hive* /usr/bin/hdfs /usr/bin/mapred /usr/bin/yarn /usr/bin/sqoop* /usr/bin/oozie /usr/bin/impala /usr/bin/spark*
rm -rf /etc/alternatives/hadoop* /etc/alternatives/flume-ng* /etc/alternatives/hbase* /etc/alternatives/hdfs /etc/alternatives/hive* /etc/alternatives/hue* /etc/alternatives/impala* /etc/alternatives/mahout* /etc/alternatives/mapred /etc/alternatives/oozie /etc/alternatives/pig* /etc/alternatives/solr* /etc/alternatives/spark* /etc/alternatives/sqoop* /etc/alternatives/yarn /etc/alternatives/zookeeper*
rm -rf /etc/hadoop* /etc/zookeeper* /etc/hive* /etc/hue /etc/impala /etc/sqoop* /etc/oozie /etc/hbase* /etc/hcatalog /etc/spark /etc/solr
到此卸载完毕。
#MYSQL卸载
#查看当前安装mysql情况
rpm -qa|grep -i mysql
#查看mysql服务状态
service mysql status
#关闭mysql服务
service mysql stop
#查看mysql相关进程
ps -ef |grep mysql
#关闭相关进程
kill pid
#删除包命令:
yum remove -y mysql
#或者 rpm -e –nodeps 包名
#查找mysql的相关目录
find / -name mysql
#删除对应的mysql目录
rm -rf 目录
#手工删除/etc/my.cnf
rm -rf /etc/my.cnf
#检查机器是否安装mysql
rpm -qa|grep -i mysql
遇到的问题:
1.rm: cannot remove `/var/run/cloudera-scm-agent/process': Device or resource busy
遇到这个问题,用reboot重启一下再删除即可。
2.通过Cloudera Manager添加Hive服务,在启动Hive的时候遇到错误:
.org.apache.hadoop.hive.metastore.HiveMetaException: Failed to load driver
这种情况,猜测是缺少jdbc驱动,于是添加jdbc驱动到相应的包下面。报的错中提示了lib路径,添加一下即可。
mysql-connector-java-5.1.36-bin.jar添加到hive的lib:
/opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7p0.36/lib/hive/lib
3.遇到CDH安装启动失败时查看报错信息
很多情况是权限不够,使用:
chown cloudera-scm:cloudera-scm /opt/cloudera/ -R
chown cloudera-scm:cloudera-scm /var/log/cloudera-scm-agent/ -R
将cloudera manager的用户授权给/opt和日志目录:
4.mysql和jdk的安装不要放在root权限下的文件夹中
5.使用MR测试时:
hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 10 100
使用测试计算π 出现以下错误:
Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied:
user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x
at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.checkFsPermission(DefaultAuthorizationProvider.java:279)
at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.check(DefaultAuthorizationProvider.java:260)
at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.check(DefaultAuthorizationProvider.java:240)
问题分析与解决:
根据报错信息是hdfs文件的权限问题,命令进入集群执行的用户为root,而hdfs文件所有者为hdfs。
要么以用户hdfs执行命令,要么调整hdfs文件的权限,因为我只是使用hdfs文件的其中之一,暂时考虑:以hdfs用户执行命令。
a.在profile文件增加:
export HADOOP_USER_NAME=hdfs
b.将System.setProperty("HADOOP_USER_NAME”,“hdfs”);
添加到代码的main方法首部,
该语句的意思是修改代码的系统变量HADOOP_USER_NAME的内容为hdfs