CentOS 7 安装 CDH 5.12.1

准备4台机器,内存,磁盘尽量给足

node1(master)          192.168.231.128                  内存16G,磁盘50G

node2                         192.168.231.129                  内存3G,磁盘50G

node3                         192.168.231.130                  内存3G,磁盘50G

node4                         192.168.231.131                   内存3G,磁盘50G

为了尽可能减少重复劳动,先在node1上配置好所有节点都需要进行的相同操作,然后克隆出其他3台虚拟机 node2,node3,node4

 一:下载所需的安装包

1.1)下载cm ,下载地址 http://archive.cloudera.com/cm5/cm/5/ 选择 cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz (708M ) 

1.2)下载cdh ,下载地址 http://archive.cloudera.com/cdh5/parcels/5.12.1/选择 CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel 、CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1 (1.6G,慢慢等吧) 

1.3)下载 manifest.json 和cdh在同一个页面 ,下载地址 http://archive.cloudera.com/cdh5/parcels/5.12.1/manifest.json

1.4)下载mysql驱动, https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.44.tar.gz

1.5)下载jdk, http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz

1.6) mysql安装程序, http://mirrors.neusoft.edu.cn/mariadb//mariadb-10.2.7/bintar-linux-x86_64/mariadb-10.2.7-linux-x86_64.tar.gz下载后上传到node1 所有的安装文件都放在 /app 目录下

二:卸载openjdk

CentOS自带OpenJdk,不过运行CDH5需要使用Oracle的JDK,需要Java 7的支持。

卸载自带的OpenJdk,使用rpm -qa | grep java查询java相关的包,使用rpm -e –nodeps 包名卸载之。

三:去Oracle的官网下载jdk安装,最后配置环境变量。

  1. cd /app
  2. tar -zxvf jdk-8u144-linux-x64.tar.gz
  3. vim /etc/profile
  4. export JAVA_HOME=/app/jdk1.8.0_144
  5. export PATH=$JAVA_HOME/bin:$PATH
  6. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  7. source /etc/profile

验证是否安装成功

  1. [root@localhost app]# java -version
  2. java version "1.8.0_144"
  3. Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
  4. Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

 四:关闭防火墙

  1. service iptables stop #临时关闭
  2. chkconfig iptables off #重启后生效
  3. systemctl stop firewalld.service #停止firewall
  4. systemctl disable firewalld.service #禁止firewall开机启动

五:SELinux

set enforce 0 (临时生效)

修改 vim /etc/selinux/config 下的

SELINUX=disabled (重启后永久生效)

  1. # This file controls the state of SELinux on the system.
  2. # SELINUX= can take one of these three values:
  3. # enforcing - SELinux security policy is enforced.
  4. # permissive - SELinux prints warnings instead of enforcing.
  5. # disabled - No SELinux policy is loaded.
  6. SELINUX=disabled
  7. # SELINUXTYPE= can take one of these two values:
  8. # targeted - Targeted processes are protected,
  9. # mls - Multi Level Security protection.
  10. SELINUXTYPE=targeted

六:安装mysql

参见:http://blog.xumingxiang.com/271.html

七:所有节点配置NTP服务

(这一步暂时可以跳过,但是在集群启动以后,会提示时间不同步)

集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。 具体思路如下:

master节点作为ntp服务器与外界对时中心同步时间,随后对所有datanode节点提供时间同步服务。

所有datanode节点以master节点为基础同步时间。

所有节点安装相关组件:

  1. yum install ntp

启动 ntp:

  1. service ntpd start

设置开机启动:

  1. chkconfig ntpd on

检查是否设置成功:chkconfig –list ntpd其中2-5为on状态就代表成功。

可以通过以下命令先进行时间同步:

  1. ntpdate us.pool.ntp.org

主节点配置(master节点)

  1. vim /etc/ntp.conf

ntp服务只有一个配置文件,配置好了就OK。 这里只给出有用的配置,不需要的配置都用#注掉,这里就不在给出(大部分把#去掉即可,不需要添加):

  1. driftfile /var/lib/ntp/drift
  2. # Permit time synchronization with our time source, but do not
  3. # permit the source to query or modify the service on this system.
  4. restrict default kod nomodify notrap nopeer noquery
  5. restrict -6 default kod nomodify notrap nopeer noquery
  6. # Permit all access over the loopback interface. This could
  7. # be tightened as well, but to do so would effect some of
  8. # the administrative functions.
  9. restrict 127.0.0.1
  10. restrict -6 ::1
  11. # Hosts on local network are less restricted.
  12. restrict 192.168.3.0 mask 255.255.255.0 nomodify notrap
  13. # Use public servers from the pool.ntp.org project.
  14. # Please consider joining the pool (http://www.pool.ntp.org/join.html).
  15. server 0.centos.pool.ntp.org iburst
  16. server 1.centos.pool.ntp.org iburst
  17. server 2.centos.pool.ntp.org iburst
  18. server 3.centos.pool.ntp.org iburst

配置文件完成,保存退出,启动服务,执行如下命令:service ntpd start

检查是否成功,用ntpstat命令查看同步状态,出现以下状态代表启动成功:

synchronisedto NTP server () at stratum 2time correct towithin74 mspolling server every 128 s

如果出现异常请等待几分钟,一般等待5-10分钟才能同步。

在其他节点,直接运行

  1. ntpdate -u node1

(主节点ntp服务器) 即可,和node1同步

这里可能出现同步失败的情况,请不要着急,一般是本地的ntp服务器还没有正常启动,一般需要等待5-10分钟才可以正常同步。启动服务:service ntpd start

因为是连接内网,这次启动等待的时间会比master节点快一些,但是也需要耐心等待一会儿。

八:克隆虚拟机

参见:https://jingyan.baidu.com/article/6b97984d9798f11ca2b0bfcd.html

九:所有节点修改网络配置

修改主机名:

  1. vim /etc/sysconfig/network
  2. HOSTNAME=node1
  3. vim /etc/hostname
  4. node1

注意 :/etc/hostname 不可以有其他和主机名无关的内容 #注释也不行,下面的就是错误的

#localhost.localdomain

node1

十:所有节点配置host

修改ip与主机名的对应关系:

  1. vim /etc/hosts
  2. 192.168.231.128 node1
  3. 192.168.231.129 node2
  4. 192.168.231.130 node3
  5. 192.168.231.131 node4

十一:所有节点设置ssh无密码登陆,打通SSH

执行

  1. ssh-keygen -t rsa

一路回车,生成无密码的密钥对。

将公钥添加到认证文件中:

  1. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

并设置authorized_keys的访问权限:

  1. chmod 600 ~/.ssh/authorized_keys

通过scp命令将各节点的认证文件拷贝到所有其他节点并追加到authorized_keys,使得各节点能够相互访问。具体如下:

在node1上执行

  1. ssh-keygen -t rsa
  2. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  3. scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh/id_rsa_node2.pub
  4. scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh/id_rsa_node1.pub
  5. scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh/id_rsa_node1.pub

注意,如果sshd 不是默认的22端口,这需要加上端口号,如:scp ~/.ssh/id_rsa.pub -p 45685 [email protected]:~/.ssh/id_rsa_node1.pub

 在node2上执行

  1. ssh-keygen -t rsa
  2. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  3. scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh/id_rsa_node2.pub
  4. scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh/id_rsa_node2.pub
  5. scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh/id_rsa_node2.pub

在node3上执行

  1. ssh-keygen -t rsa
  2. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  3. scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh/id_rsa_node3.pub
  4. scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh/id_rsa_node3.pub
  5. scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh/id_rsa_node3.pub

在node4上执行

  1. ssh-keygen -t rsa
  2. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  3. scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh/id_rsa_node4.pub
  4. scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh/id_rsa_node4.pub
  5. scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh/id_rsa_node4.pub

在node1上执行

  1. cat ~/.ssh/id_rsa_node2.pub >> ~/.ssh/authorized_keys
  2. cat ~/.ssh/id_rsa_node3.pub >> ~/.ssh/authorized_keys
  3. cat ~/.ssh/id_rsa_node4.pub >> ~/.ssh/authorized_keys

在node2上执行

  1. cat ~/.ssh/id_rsa_node1.pub >> ~/.ssh/authorized_keys
  2. cat ~/.ssh/id_rsa_node3.pub >> ~/.ssh/authorized_keys
  3. cat ~/.ssh/id_rsa_node4.pub >> ~/.ssh/authorized_keys

在node3上执行

  1. cat ~/.ssh/id_rsa_node1.pub >> ~/.ssh/authorized_keys
  2. cat ~/.ssh/id_rsa_node2.pub >> ~/.ssh/authorized_keys
  3. cat ~/.ssh/id_rsa_node4.pub >> ~/.ssh/authorized_keys

在node4上执行

  1. cat ~/.ssh/id_rsa_node1.pub >> ~/.ssh/authorized_keys
  2. cat ~/.ssh/id_rsa_node2.pub >> ~/.ssh/authorized_keys
  3. cat ~/.ssh/id_rsa_node3.pub >> ~/.ssh/authorized_keys

十二 :开始安装Cloudera Manager

12.1)在所有节点创建cloudera-scm用户

  1. useradd --system --home-dir /opt/cm-5.12.1/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

12.2)安装Cloudera Manager Server

安装前先保证机器上安装了python,不过一般centos7都默认安装了python2.7.5

主节点解压安装

cloudera manager的目录在/app下,解压:tar xzvf cloudera-manager*.tar.gz 将解压后的cm-5.12.1和cloudera目录放到/opt目录下:

  1. tar -zxvf /app/cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz -C /opt

12.3)将mysql驱动copy到/opt/cm-5.12.1/share/cmf/lib/中:

  1. cp /app/cdh5.12.1/mysql-connector-java-5.1.44-bin.jar /opt/cm-5.12.1/share/cmf/lib/

12.4)在主节点初始化CM5的数据库:

启动mysql,然后

  1. /opt/cm-5.12.1/share/cmf/schema/scm_prepare_database.sh mysql cm -hnode1 -uroot -proot --scm-host node1 scm

在这里后面的参数分别是:数据库类型 数据库名称 数据库主机名 数据库用户名 密码 –scm-host cmserver主机名 scm scm scm

会要求输入scm密码

Enter SCM password: scm

如果是非root用户,可能会出现下面这样JAVA_HOME找不到

解决方案:修改scm_prepare_database.sh,在文件开头加上

  1. vim /opt/cm-5.12.1/share/cmf/schema/scm_prepare_database.sh
  2. JAVA_HOME=/app/jdk1.8.0_144
  3. export JAVA_HOME=/app/jdk1.8.0_144

这时我们发现数据库多了一个cm 的数据库

并且mysql.user表里多了一个叫scm的用户

然后mysql shell 客户端登录 修改允许scm远程登录

  1. update user set host = '%' where user = 'scm';

然后授权

  1. GRANT all ON *.* TO 'scm'@'%' ;
  2. GRANT all ON *.* TO 'root'@'%' ;
  3. flush privileges;

重启mysql

十三:安装Cloudera Manager Agent

13.1)修改/opt/cm-5.12.1/etc/cloudera-scm-agent/config.ini中的server_host为主节点的主机名。

13.2)同步Agent到其他所有节点:

  1. scp -r /opt/cm-5.12.1 root@node2:/opt/

13.3)准备Parcels,用以安装CDH5

将CHD5相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中(如没有parcel-repo,需要手动创建)

  1. node1 app]# cp CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel /opt/cloudera/parcel-repo/
  2. node1 app]# cp CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1 /opt/cloudera/parcel-repo/
  3. node1 app]# cp manifest.json /opt/cloudera/parcel-repo/

相关的文件如下:

CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel

CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1

manifest.json

最后将CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1,重命名为CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha,

这点必须注意,否则,系统会重新下载CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1文件。

注意:如果是虚拟机最小化安装的话,先安装下 yum -y install psmisc

否则会报错:/opt/cm-5.12.1/etc/init.d/cloudera-scm-server:行109: pstree: 未找到命令

13.4)启动 cloudera-scm-server

  1. mkdir -p /var/lib/cloudera-scm-server
  2. mkdir -p /var/lib/cloudera-scm-agent
  3. mkdir -p /var/lib/cloudera-scm-server-db/data

在主机节点创建上面的目录,否则会出错,7180端口起不来。

主节点通过/opt/cm-5.12.1/etc/init.d/cloudera-scm-server start启动服务端。

server启动成功后会多出7180等端口

问题1):启动server时,显示OK,但是7180端口没起来

  1. [root@node1 ~]# service cloudera-scm-server-db status
  2. Redirecting to /bin/systemctl status cloudera-scm-server-db.service
  3. cloudera-scm-server-db.service
  4. Loaded: not-found (Reason: No such file or directory)
  5. Active: inactive (dead)
  6. [root@node1 ~]# service cloudera-scm-server-db start
  7. Redirecting to /bin/systemctl start cloudera-scm-server-db.service
  8. Failed to start cloudera-scm-server-db.service: Unit cloudera-scm-server-db.service failed to load: No such file or directory.

解决办法:

hue 安装出现拒绝链接问题,查看service 的log日志。找不到了libmysqlclient.so.18

可知这是缺少so文件引起的,但是find / -name libmysqlclient.so.18又找不到文件,装了mysql后只能找到libmysqlclient.so.20文件!通过google找到了解决办法: 
通过移除重装让他自动识别

yum remove postfix
yum install postfix
如果还不能链接上。给这so.18做一个软链接

ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18

  1. mkdir -p /var/lib/cloudera-scm-server-db/data

问题2)如果是非root用户,可能会出现下面这样JAVA_HOME找不到

修改/opt/cm-5.12.1/etc/init.d/cloudera-scm-server,在文件开头加上

  1. JAVA_HOME=/app/jdk1.8.0_144
  2. export JAVA_HOME=/app/jdk1.8.0_144

问题3)非root用户,启动显示OK,但是7180端口起不来,查看日志报如下错误

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Access denied for user 'scm'@'%' to database 'cm'

解决办法:用mysql shell 客户端登录 后执行下面命令

grant all on cm.* to 'scm'@'%' identified by 'scm' with grant option;

问题4)非root用户,启动显示OK,但是7180端口起不来,查看日志报如下错误

  1. 2017-09-28 12:48:52,618 ERROR WebServerImpl:com.cloudera.server.web.cmf.search.components.SearchRepositoryManager: The server storage directory [/var/lib/cloudera-scm-server] doesn't exist.
  2. 2017-09-28 12:48:52,618 ERROR WebServerImpl:com.cloudera.server.web.cmf.search.components.SearchRepositoryManager: No read permission to the server storage directory [/var/lib/cloudera-scm-server]
  3. 2017-09-28 12:48:52,618 ERROR WebServerImpl:com.cloudera.server.web.cmf.search.components.SearchRepositoryManager: No write permission to the server storage directory [/var/lib/cloudera-scm-server]
  4. 2017-09-28 12:48:54,663 INFO WebServerImpl:org.springframework.web.servlet.handler.SimpleUrlHandlerMapping: Root mapping to handler of type [class org.springframework.web.servlet.mvc.ParameterizableViewController]
  5. 2017-09-28 12:48:54,716 INFO WebServerImpl:org.springframework.web.servlet.DispatcherServlet: FrameworkServlet 'Spring MVC Dispatcher Servlet': initialization completed in 2536 ms
  6. 2017-09-28 12:48:54,738 INFO WebServerImpl:com.cloudera.server.web.cmon.JobDetailGatekeeper: ActivityMonitor configured to allow job details for all jobs.
  7. 2017-09-28 12:48:55,813 ERROR SearchRepositoryManager-0:com.cloudera.server.web.cmf.search.components.SearchRepositoryManager: The server storage directory [/var/lib/cloudera-scm-server] doesn't exist.
  8. 2017-09-28 12:48:55,813 ERROR SearchRepositoryManager-0:com.cloudera.server.web.cmf.search.components.SearchRepositoryManager: No read permission to the server storage directory [/var/lib/cloudera-scm-server]
  9. 2017-09-28 12:48:55,813 ERROR SearchRepositoryManager-0:com.cloudera.server.web.cmf.search.components.SearchRepositoryManager: No write permission to the server storage directory [/var/lib/cloudera-scm-server]

解决办法:

  1. sudo mkdir /var/lib/cloudera-scm-server

13.5)启动cloudera-scm-agent

所有节点通过/opt/cm-5.12.1/etc/init.d/cloudera-scm-agent start启动Agent服务。 (所有节点都要启动Agent服务,包括服务端)

我们启动的其实是个service脚本,需要停止服务将以上的start参数改为stop就可以了,重启是restart。

agent启动成功后会多出19001和9000等端口

agent 有时候第一次启动后会立马stop,再启动一次就好了,没弄明白什么原因!

如果启动报错可以去 /opt/cm-5.12.1/log/ 查看错误日志。例如:

启动时agent时,如果出现“cmf-agent: error: argument –hostname is required”错误,则是因为/etc/hosts 和/etc/hostname 的配置没有对于那个好.

下面是node1上的正确配置

/etc/hosts

#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.231.128 node1

192.168.231.129 node2

192.168.231.130 node3

192.168.231.131 node4

/etc/hostname

node1

注意:启动server时,不会立即查询到7180端口,启动过程比较慢,可能需要等待5-10分钟

十四:启动Cloudera Manager

server 和所有节点agent启动成功后就可以在浏览器访问Cloudera Manager

http://192.168.231.128:7180/cmf/login

默认的用户名和密码均为admin:

十五:CDH5的安装配和集群配置

欢迎页面版本选择页面

我们选择Cloudera Express免费版,现在已经没有50个节点的限制

继续

选择主机节点

在这里看到了我们的4个节点node1,node2,node3,node4。勾选所有节点,继续

假如在安装的时候出现问题而中断或重装,如网络连接中断,机器死机,继续安装的时候可能会出现查询不到机器,并且根据ip搜索机器的时候,出现“当前受管”

的状态为“是”,安装失败的机器不能再选择了。

先停止所有服务。清除数据库。

  1. 1> 删除Agent节点的UUID
  2. rm -rf /opt/cm-5.12.1/lib/cloudera-scm-agent/*
  3. 2> 清空主节点CM数据库 进入主节点的Mysql数据库,然后
  4. drop database cm
  5. 3> 在主节点上重新初始化CM数据库
  6. /opt/cm-5.12.1/share/cmf/schema/scm_prepare_database.sh mysql cm -hnode1 -uroot -proot --scm-host node1 scm

第6步解释:......../scm_prepare_database.sh 数据库类型 数据库名 主机 账号 密码 --scm.......

等待一下,连接访问master:7180即可

集群安装

出现以下包名,说明本地Parcel包配置无误,直接点继续就可以了。如果此处发现不到parcel包,就重启所有节点的agent服务,和master的server服务。

如果parcel包不在默认的/opt/cloudera下面,则需要手动配置,如下图,然后重启cloudera-scm-server 和各节点的cloudera-scm-agent

继续,如果配置本地Parcel包无误,那么下图中的已下载,应该是很快就出现了,然后就是耐心等待分配过程就行了,这个过程的速度就取决于节点之间的传输速度。

如果安装过程中出现过中断再重新安装可能会出现报错“一个或多个主机没有报告其操作系统分配。这可能是由于运行已过期的 Cloudera Manager Agent 版本造成的。请运行 Host Inspector 检查 Agent 版本。”

这个不要慌,耐心等等就好了

在等待的过程中可以打开浏览器控制台查看是否有报错

等待了半个小时左右可以继续了

检测主机正确性

主机检测结果,除了两个黄色警告提示,基本没问题

第一个警告:

Cloudera 建议将 /proc/sys/vm/swappiness 设置为 10。当前设置为 60。使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf 以在重启后保存该设置。

echo 10 > /proc/sys/vm/swappiness

这样操作重启机器还是还原,要永久改变

vim /etc/sysctl.conf

vm.swappiness=10

第二个警告,提示执行命令:

echo never > /sys/kernel/mm/transparent_hugepage/defrag

echo never > /sys/kernel/mm/transparent_hugepage/enabled

执行完毕,重启后,警告依然,暂时不处理

接下来是选择安装服务,选择自定义,继续

主机角色分配

我们zokeeper选择三个节点,hdfs dataNode选择3个节点 ,继续

数据库设置,这一步前先建好相应的数据库 hive,oozie,hue

点击测试连接之前先拷贝好mysql驱动

  1. cp /app/cdh5.12.1/mysql-connector-java-5.1.44-bin.jar /opt/cloudera/parcels/CDH-5.12.1-1.cdh5.12.1.p0.3/lib/hive/lib
  2. cp /app/cdh5.12.1/mysql-connector-java-5.1.44-bin.jar /var/lib/oozie

数据库检测成功successful,继续。

如果出现如下错误,hue连不上:

这是因为服务器上缺少了一个组件,安装一下即可

  1. yum install -y python-lxml

图15.15 审核更改,主要是可以设置一些目录,可以修改成自己想要的,如果修改前提是要先创建目录,否侧hdfs会无法启动,并且报错文件夹不存在,并确保访问权限。

我这里保持默认

注意:在进行下一步继续前我们还要做几个事情,不然下一步会报错,会很郁闷,很无解

1)修改/var/log目录权限

  1. chmod -R 777 /var/log

2)修改hadoop-env.sh ,添加JAVA_HOME配置项

vim /opt/cloudera/parcels/CDH-5.12.1-1.cdh5.12.1.p0.3/lib/hadoop/etc/hadoop/hadoop-env.sh

添加

  1. JAVA_HOME=/app/jdk1.8.0_144
  2. export JAVA_HOME=/app/jdk1.8.0_144

3)编辑 vim /opt/cm-5.12.1/lib64/cmf/service/client/deploy-cc.sh

直接在上面加上

  1. JAVA_HOME=/app/jdk1.8.0_144
  2. export JAVA_HOME=/app/jdk1.8.0_144

所有节点都这样设置一下!

4)复制mysql驱动

  1. cp /app/cdh5.12.1/mysql-connector-java-5.1.44-bin.jar /opt/cloudera/parcels/CDH-5.12.1-1.cdh5.12.1.p0.3/lib/hive/lib
  2. cp /app/cdh5.12.1/mysql-connector-java-5.1.44-bin.jar /var/lib/oozie

继续,首次运行

这一步完成漫长的安装之旅就结束了。

然后就可以进入管理界面,可能有些组件在安装过程中没能启动成功,那么在管理界面上可以操作启动!!

十六:后续设置

16.1) 设置yarn.scheduler.maximum-allocation-mb' and/or 'yarn.nodemanager.resource.memory-mb 分别设置为2G ,可在cm管理界面设置

16.2)设置dfs权限,取消超级用户限制,可在cm管理界面设置

相关报错:

1)首次运行命令部署spark客户端配置报

Failed to deploy client configuration to the cluster.

仅完成 0/3 个步骤。首个失败:主机 node1 (id=1) 上的客户端配置 (id=2) 已使用 1 退出,而预期值为 0。

 

解决方法:

  1. find / -type f -name "*cc.sh"

定位到编辑 vim /opt/cm-5.12.1/lib64/cmf/service/client/deploy-cc.sh

直接在上面加上

  1. JAVA_HOME=/app/jdk1.8.0_144
  2. export JAVA_HOME=/app/jdk1.8.0_144

所有节点都这样设置一下!

然后刷新页面再点击重试,否则会出现下面很无脑的报错

明明文件是存在的,偏偏说瞎话

2)首次运行命令,创建oozie数据库表失败主机 node1 (id= 1) 上的进程 oozie-OOZIE-SERVER-createdbtables (id=57) 通过 1 退出并预期 0

解决办法:oozie缺少mysql驱动

  1. cp /app/cdh5.12.1/mysql-connector-java-5.1.44-bin.jar /var/lib/oozie

3)HDFS-副本不足的块

原因:原因是设置的副本备份数与DataNode的个数不匹配。我们在之前理论篇中已经说明了dfs. replication属性默认是3,也就是说副本数—块的备份数默认为3份。但是我们这里集群只有两个DataNode。所以导致了达不到目标—副本备份不足。解决方法:这种情况下的修复有2个步骤,1是设置目标备份数为2,2是通过命令更改当前备份数。副本不足和副本过多都可以用这2个步骤解决,主要是跟DataNode的个数对应。设置目标备份数为2点击集群-HDFS-配置搜索dfs. replication,设置为2后保存更改。

dfs.replication这个参数其实只在文件被写入dfs时起作用,虽然更改了配置文件,但是不会改变之前写入的文件的备份数。所以我们还需要步骤2在node1中通过命令更改备份数:

  1. su hdfs
  2. hadoop fs -setrep -R 2 /
  3. sudo -u hdfs hadoop fs -setrep -R 2 /

这里的-R 2的数字2就对应我们的DataNode个数。然后还要重新部署相关客户端配置,cm会有提示

4)yarn job history 起不来,报“Service org.apache.hadoop.mapreduce.v2.hs.JobHistoryServer failed in state INITED; cause: org.apache.hadoop.yarn.exceptions.YarnRuntimeException: Error creating done directory: [hdfs://node1:8020/user/history/done]”

原因:dfs目录权限不够

解决办法 :

  1. chmod -R 777 /dfs

5)spark启动出错命令行执行spark-submit,报错,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'在Yarn中同时修改上述两个参数的值,调整到2G 。

猜你喜欢

转载自blog.csdn.net/weixin_41876523/article/details/83146898