index | 配置项 |
---|---|
1. | redhat 7.4 (centos7.7_x64) |
2. | CDH5.16.2 |
3. | JDK1.8_181 |
4. | spark2.2.0 |
https://www.centos.org/download/
选择mirror - aliyun
之后就可以下载centos7了。min版只有900多M,而完全版要4G多,这是影响CDH运行速度的1大原因。
CM下载地址:http://archive.cloudera.com/cm5/cm/5
离线库parcels下载地址:http://archive.cloudera.com/cdh5/parcels
跟上面不同的地方,要注意!!!
三个必须建立的分区,swap交换分区、boot引导分区、/ 根目录分区,也就是系统分区。
swap 根据物理内存。 用于在系统运行内存不足时提供运算。系统默认分配基本为物理内存的2倍,因为自己电脑内存紧张,虽然设置了8G内存,swap设4G也可以
小于等于4G物理内存的系统,至少设置2GB的交换分区
4G~16G物理内存的系统,至少设置4GB的交换分区
16G~64G物理内存的系统,至少设置8GB的交换分区
64G~256G物理内存的系统,至少设置16GB的交换分区
boot分区要求很低,最初centos5.x centos6.x 200M就够用。centos7.x的话,系统默认给1G。大一点无所谓的。但是不能太小。boot给200M即可。
vi /etc/sysconfig/network-scripts/ifcfg-ens32 #如果是桥接,这里是ens33
TYPE=Ethernet # 网络类型为以太网
BOOTPROTO=static # 手动分配ip
NAME=ens32 # 网卡设备名,设备名一定要跟文件名一致
DEVICE=ens32 # 网卡设备名,设备名一定要跟文件名一致
ONBOOT=yes # 该网卡是否随网络服务启动
IPADDR=192.168.100.100 # 该网卡ip地址就是你要配置的固定IP,如果你要用xshell等工具连接,220这个网段最好和你自己的电脑网段一致,否则有可能用xshell连接失败
GATEWAY=192.168.100.2 # 网关,这2个配置去虚拟机的编辑选项卡中查看
NETMASK=255.255.255.0 # 子网掩码
DNS1=8.8.8.8 # DNS,8.8.8.8为Google提供的免费DNS服务器的IP地址
vi /etc/sysconfig/network
NETWORKING=yes # 网络是否工作,此处一定不能为no
systemctl stop firewalld # 临时关闭防火墙
systemctl disable firewalld # 禁止开机启动
C:\windows\system32\drivers\etc\hosts
vi /etc/hostname 修改hostname要reboot,否则不生效
vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.100 standard
192.168.100.101 node101
192.168.100.102 node102
192.168.100.103 node103
192.168.100.104 node104
192.168.100.105 node105
192.168.100.106 node106
192.168.100.107 node107
192.168.100.108 node108
192.168.100.109 node109
192.168.100.110 node110
systemctl restart network
yum -y install rsync
在/usr/local/bin下创建rrsync文件
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
for((host=105; host<108; host++)); do
echo ------------------- node$host --------------
rsync -rvl $pdir/$fname $user@node$host:$pdir
done
权限 chmod 777 rrsync
“bad interpreter” :set fileformat=unix
#! /bin/bash
for i in node105 node106 node107
do
echo --------- $i ----------
ssh $i "$*"
done
[root@node105 module]# cat /etc/profile >> ~/.bashrc
[root@node106 module]# cat /etc/profile >> ~/.bashrc
[root@node107 module]# cat /etc/profile >> ~/.bashrc
mv的时候,如果目的地的文件夹不存在,会把要移动的目录下的所有内容复制到目的地目录下,而不是以源文件夹的形式
/usr/java默认没有这个目录,要手动创建
mkdir -p /usr/java
tar -xzvf jdk-8u45-linux-x64.tar.gz -C /usr/java/
chown -R root:root /usr/java/jdk
vim /etc/profile
export JAVA_HOME=/usr/java/jdk
export PATH=${JAVA_HOME}/bin:${PATH}
source /etc/profile
注意!!!:
如果之前设置了JAVA_HOME,现在又要修改,一定勿忘~/.bashrc下要更新,而且还要把原来追加的JAVA_HOME删除,否则CDH服务获取的仍然是之前的JAVA_HOME。JAVA_HOME优先从~/.bashrc取
cat /etc/profile >> ~/.bashrc
vi ~/.bashrc 搜索JAVA_HOME,删除原来写入的。
3. /etc/profile中设置env
4. 分发到其他节点
5. 所有节点source生效
SELinux是linux的安全子系统,用来控制程序访问指定文件,会影响软件安装部署。
vi /etc/selinux/config
#SELINUX=enforcing
SELINUX=disabled
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl enable firewalld.service
CDH官方建议swappiness=1~10,最大限度使用物理内存,然后才用swap交换区
# 默认值30
cat /proc/sys/vm/swappiness
# 临时修改,重启恢复默认值30
sysctl -w vm.swappiness=10
# 永久生效(重启后不恢复)
echo "vm.swappiness=10" >> /etc/sysctl.conf
cat /proc/sys/vm/swappiness
禁用hugepage透明大页,因为其可能会使CPU利用率过高
查看
[root@localhost ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
[root@localhost ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
上面状态就说明是启动状态,关闭:
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.d/rc.local
echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
然后reboot
,再次查看
[root@localhost ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
[root@localhost ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
说明已经关闭
修改linux最大文件句柄数(默认是1024)
ulimit -a # open files 就是最大句柄数
vi /etc/security/limits.conf
# 从文件最后追加
root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
ulimit -a
yum install libxslt-devel -y
为了防止后面安装hue时报错yum install libxslt-devel -y
hue启动报错yum install cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi
hue运行时报错yum install psmisc -y
防止pstree找不到yum install -y perl
oozie启动报错 vi /etc/sysconfig/network-scripts/ifcfg-ens32
vi /etc/hostname
[root@node105 .ssh]$ ssh-keygen -t rsa
[root@node106 .ssh]$ ssh-keygen -t rsa
[root@node107 .ssh]$ ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
[root@node105 .ssh]$ ssh-copy-id node105 && ssh-copy-id node106 && ssh-copy-id node107
注意!!!:
这里一定要显式的输入yes,不能直接回车
2种方式,所有节点同步网络时间,或者设置一个节点同步,其他的client跟server同步
yum install -y ntp ntpdate
tzselect 5 9 1 1
vim /etc/ntp.conf
driftfile /var/lib/ntp/drift
restrict default nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
server 127.127.1.0
fudge 127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
disable monitor
vim /etc/ntp.conf
driftfile /var/lib/ntp/drift
restrict default nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
server 192.168.233.105
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
disable monitor
yum install ntpdate -y
,ntpdate time.windows.com
crontab -e
*/5 * * * * ntpdate time.windows.com > /dev/null 2>&1
crontab -l
Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details
根据下面的博客,把rm -rf /var/lib/mysql删掉再重启即可。注意是重启,虽然之前启动失败,但也是启动了。/usr/lib64/mysql/libmysqlclient.so.18.0.0
到主节点的/usr/lib64/mysql/
下,并建立同名软连接,防止后面hue报错https://blog.csdn.net/hello_world_qwp/article/details/79551789
set global validate_password_policy=LOW; #只验证密码的长度
set global validate_password_length=4; #注意,这里最小为4,即使设置了3且显示成功。除非关闭密码验证。
#之后就可以顺利的改密码了
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
#给指定用户设置可以访问mysql的ip
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;
mysql57只需要在[mysqld]中
character-set-server=utf8
init_connect='SET NAMES utf8'
[client]不需要设
重启mysqlsystemctl restart mysqld
。进入mysql后直接输入status;就可以查看编码
mysql> status
--------------
mysql Ver 14.14 Distrib 5.7.29, for Linux (x86_64) using EditLine wrapper
Connection id: 2
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.29 MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 9 min 36 sec
Threads: 6 Questions: 67878 Slow queries: 0 Opens: 964 Flush tables: 1 Open tables: 334 Queries per second avg: 117.843
--------------
-- hive数据库,一般起名叫下面的metastore,叫这个也行
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-- metastore
create database metastore DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-- 集群监控数据库
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-- hue数据库
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-- oozie数据库
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-- sentry
create database sentry DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-- scm
create database scm DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-- monitor
create database monitor DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
[root@node105 module]#
useradd --system --home=/opt/cm-5.16.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
[root@node106 module]#
useradd --system --home=/opt/cm-5.16.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
[root@node107 module]#
useradd --system --home=/opt/cm-5.16.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
参数说明:
--system 创建一个系统账户
--home 指定用户登入时的主目录,替换系统默认值/home/<用户名>
--no-create-home 不要创建用户的主目录
--shell 用户的登录 shell 名
--comment 用户的描述信息
这里的home一定要写对,不然会导致启动报错上传
cloudera-manager-el6-cm5.16.2_x86_64.tar.gz
mysql-connector-java-5.1.32.jar
到/opt/software
解压CM压缩包tar zxf cloudera-manager-el6-cm5.16.2_x86_64.tar.gz
cloudera
cm-5.16.2
mv cloudera /opt/
mv cm-5.16.2 /opt/
上传到/opt/cloudera/parcel-repo
manifest.json
CDH-5.16.2-1.cdh5.16.2.p0.8-el7.parcel
# 改名
CDH-5.16.2-1.cdh5.16.2.p0.8-el7.parcel.sha
到/opt/cloudera/parcel-repo/
cd /opt/software/
mv mysql-connector-java-5.1.47.jar mysql-connector-java.jar
cp /opt/software/mysql-connector-java.jar /opt/cm-5.16.2/share/cmf/lib/
mkdir /usr/share/java
cp /opt/software/mysql-connector-java.jar /usr/share/java/
vi /opt/cm-5.16.2/etc/cloudera-scm-agent/config.ini
修改server_host 改为管理节点的主机名
server_host=node105
vi /opt/cm-5.16.2/share/cmf/bin/cmf-server
CMF_OPTS="$CMF_OPTS -Duser.timezone=GMT+08"
这一步很重要,cm库建不好server启不来
/opt/cm-5.16.2/share/cmf/schema/scm_prepare_database.sh mysql cm -h node105 -uroot -proot --scm-host node105 scm scm scmm
这里设置的密码是3位,而mysql57默认开启了validate_password,密码最小也是4位,要么关闭mysql57的密码验证,要么密码在这里设为4位。
vi /etc/my.cnf [mysqld] validate_password=OFF
rrsync cm-5.16.2
# 启动管理节点:node105
[root@node105 cm]# /opt/cm-5.16.2/etc/init.d/cloudera-scm-server start
Starting cloudera-scm-server: [确定]
# 启动工作节点:node105、node106、node107
[root@node105 cm]# /opt/cm-5.16.2/etc/init.d/cloudera-scm-agent start
[root@node106 cm]# /opt/cm-5.16.2/etc/init.d/cloudera-scm-agent start
[root@node107 cm]# /opt/cm-5.16.2/etc/init.d/cloudera-scm-agent start
[root@node105 cm]# netstat -anp | grep 7180
tcp 0 0 0.0.0.0:7180 0.0.0.0:* LISTEN 5498/java
pstree:command not found
,这个错不影响启动,是因为centos7默认没有pstree命令,要手动安装yum install psmisc -y
。# 关闭工作节点:node105、node106、node107
[root@node105 cm]# /opt/cm-5.16.2/etc/init.d/cloudera-scm-agent stop
Stopping cloudera-scm-agent: [确定]
[root@node106 cm]# /opt/cm-5.16.2/etc/init.d/cloudera-scm-agent stop
Stopping cloudera-scm-agent: [确定]
[root@node107 cm]# /opt/cm-5.16.2/etc/init.d/cloudera-scm-agent stop
Stopping cloudera-scm-agent: [确定]
# 关闭服务节点:node105
[root@node105 cm]# /opt/cm-5.16.2/etc/init.d/cloudera-scm-server stop
停止 cloudera-scm-server: [确定]
https://blog.csdn.net/u010766519/article/details/90633887
https://blog.csdn.net/holdbelief/article/details/80287471
是因为server重启而agent没匹配,删除agent的id然后重启agent
[root@cdh-70 ~]# find / -name cm_guid
/var/lib/cloudera-scm-agent/cm_guid
[root@cdh-70 ~]# rm -rf /var/lib/cloudera-scm-agent/cm_guid --删除文件
[root@cdh-70 ~]# /etc/init.d/cloudera-scm-agent restart --重启所有agent服务
安装时遇到1个问题,分配parcel时虚拟机显示空间不足,能删的都删了之后还提示不足,我就点了取消,导致3个虚拟机都自动关闭了,再打开重新登录进入cmUI发现引导安装的页面不能选节点了,此时默认节点已经设置。但此时我的parcel还没有分发完,于是就从集群中把3个节点删除,重新登录后就又可以选3个节点了,这样就可以重新分发parcel了
NN和SNN要分开,DN要选所有节点。
没有设置HA,NN只有1个
HttpFS和NFS Gateway不选
Gateway选所有,HMS和HS2选主节点,WebHCat 不选
yum install libxslt-devel -y
hue启动报错yum install cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi
hue运行时报错`RM尽量不跟主节点相同,NN跟DN相同,
要选history server,一般选非server节点,
3个节点都可以操作spark。client模式下谁提交谁就是driver。如果为了省内存,也可以只选1个。
Server要设在有mysql的
Gateway也就是客户端统一设到1个节点,也就是node107
Unexpected error. Unable to verify database connection.
https://www.cnblogs.com/wuning/p/11738697.html
这篇blog遇到的错跟我一模一样,日志信息也一样,但我的mysql节点并不是没有so文件,而是mysql57自动把/usr/lib64/mysql/下的so文件给升级了,跟hue版本不匹配,如下,从别的没安装mysql57的复制1个并设置ln即可。
从别的节点复制1个18.0.0的so文件到/usr/lib64/mysql即可。
[root@node106 mysql]# rrsync /usr/lib64/mysql/libmysqlclient.so.18.0.0
ln -s /usr/lib64/mysql/libmysqlclient.so.18.0.0 libmysqlclient.so.18
如果提示libmysqlclient.so.18已经有,就把libmysqlclient.so.18删了再建
ImportError: libxslt.so.1: cannot open shared object file: No such file or directory
3个节点安装 yum install libxslt-devel -y
没启动CMD之前服务的状态都是个灰色问号,图标区域也不显示
hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.16.2.jar pi 10 1
每个版本的CDH会提供一套组件的搭配,但有时需要更换或添加组件。比如CDH5.16.2默认spark是1.6,现在要升级到2.2.0
CDH支持同组件多版本并存,可以在不删除1.6的情况下安装使用2.2.0
http://archive.cloudera.com/spark2/parcels/2.2.0.cloudera4/
http://archive.cloudera.com/spark2/csd/SPARK2_ON_YARN-2.2.0.cloudera4.jar
一共需要下载4个
上传文件SPARK2_ON_YARN-2.2.0.cloudera4.jar到/opt/cloudera/csd/下面
上传文件SPARK2-2.2.0.cloudera4-1.cdh5.13.3.p0.603055-el7.parcel和SPARK2-2.2.0.cloudera4-1.cdh5.13.3.p0.603055-el7.parcel.sha1 到/opt/cloudera/parcel-repo/
3)将sha1重命名为sha
[root@node105 parcel-repo]# mv /opt/cloudera/parcel-repo/SPARK2-2.2.0.cloudera4-1.cdh5.13.3.p0.603055-el7.parcel.sha1 SPARK2-2.2.0.cloudera4-1.cdh5.13.3.p0.603055-el7.parcel.sha
此时回到首页,发现并没有spark2
,重启CM
也就是server
后才发现有了spark2。添加、启动spark服务注意:CDH的server和agent服务和组件的服务是平级的,把server和agent kill了,组件的服务还在
2种解决办法:
ln -s /usr/java/jdk/ /usr/java/jdk1.8
Required executor memory (1024+384 MB) is above the max threshold
把2个参数调大,然后重启下yarn
https://blog.csdn.net/With__Sunshine/article/details/94918874
Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x
切换成hdfs用户即可
Permission denied: user=dr.who
hdfs dfs -chmod -R 755 /user/spark
spark2-submit \
--master yarn --deploy-mode client \
--executor-memory 1G --num-executors 2 --executor-cores 2 \
--driver-memory 1g --total-executor-cores 2 \
--class cn.dc.SparkWC \
/opt/test/spark_test-shade-0.0.1-SNAPSHOT.jar
java.io.FileNotFoundException: File does not exist:hdfs://node105:8020/user/spark/spark2ApplicationHistory
hadoop fd -mkdir /user/spark/spark2ApplicationHistory