安装 Cloudera Manager、CDH、KUDU 随手记

来源:互联网 发布:中兴网络机顶盒官网 编辑:程序博客网 时间:2024/05/17 02:29

转自:https://my.oschina.net/balajinima/blog/862969

一、关于CDH和Cloudera Manager


CDH (Cloudera's Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,并集成了很多补丁,可直接用于生产环境。

Cloudera Manager则是为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机、Hadoop、Hive、Spark等服务的安装配置管理做了极大简化。

二、系统环境


操作系统:CentOS 6.6 x64Cloudera Manager:5.10.0CDH: 5.10.0KUDU: 1.2.0

三、安装包准备


1.Cloudera Manager仓库镜像包下载地址:

https://archive.cloudera.com/cm5/repo-as-tarball/5.10.0/cm5.10.0-centos6.tar.gz

2.CDH parcel安装包地址:

https://archive.cloudera.com/cdh5/parcels/5/CDH-5.10.0-1.cdh5.10.0.p0.41-el6.parcel

https://archive.cloudera.com/cdh5/parcels/5/CDH-5.10.0-1.cdh5.10.0.p0.41-el6.parcel.sha1

https://archive.cloudera.com/cdh5/parcels/5/manifest.json

3.kudu 的 parcel 安装包地址:

http://archive.cloudera.com/kudu/parcels/latest/KUDU-1.2.0-1.cdh5.10.0.p0.55-el6.parcel

http://archive.cloudera.com/kudu/parcels/latest/KUDU-1.2.0-1.cdh5.10.0.p0.55-el6.parcel.sha1

4.kudu 的 csd 安装包地址:

http://archive.cloudera.com/kudu/csd/KUDU-5.10.0.jar

注意: 通过 Cloudera Manager 安装parcel时sha1格式的文件需要提前修改为sha。

四、准备工作


1.更新系统(所有节点)
yum -y update
2.网络配置(所有节点)

修改hostname:

vi /etc/sysconfig/network

编辑

NETWORKING=yesHOSTNAME= hadoop35.test.com

通过service network restart重启网络服务生效。

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

vi /etc/hosts,

编辑

10.10.25.35 hadoop35.test.com10.10.25.36 hadoop36.test.com10.10.25.37 hadoop37.test.com10.10.25.38 hadoop38.test.com10.10.25.43 hadoop43.test.com10.10.25.44 hadoop44.test.com10.10.25.45 hadoop45.test.com10.10.25.46 hadoop46.test.com

注意:这里需要将每台机器的ip及主机名对应关系都写进去,本机的也要写进去,否则启动Agent的时候会提示hostname解析错误。

3.配置公钥认证(用于免密登录)

在管理节点(hadoop35.test.com)上执行

ssh-keygen -t rsa

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

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

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

设置authorized_keys的访问权限:

chmod 600 ~/.ssh/authorized_keys

scp文件到所有受管节点( 10.10.25.35,36,37,38 和 10.10.25.43,44,45,46)的~/.ssh目录:

scp ~/.ssh/authorized_keys root@hadoop35.test.com:~/.ssh/

测试:在管理节点上ssh hadoop36.test.com,正常情况下,不需要密码就能直接登陆进去了。

注意:.ssh目录访问权限是700 authorized_keys的文件访问权限是600

4.关闭防火墙和SELinux(所有节点)

注意:需要在所有的节点上执行,因为涉及到的端口太多了,临时关闭防火墙是为了安装起来更方便,安装完毕后可以根据需要设置防火墙策略,保证集群安全。

关闭防火墙:

service iptables stop (临时关闭)  chkconfig iptables off (重启后生效)

关闭SELINUX(实际安装过程中发现没有关闭也是可以的,不知道会不会有问题,还需进一步进行验证):

setenforce 0 (临时生效)  修改 /etc/selinux/config 下的 SELINUX=disabled (重启后永久生效)
5.配置NTP服务

yum安装ntp(所有节点):

yum -y install ntp

在配置之前,先使用ntpdate手动同步一下时间,免得本机与对时中心时间差距太大,使得ntpd不能正常同步。这里选用us.pool.ntp.org作为对时中心,ntpdate us.pool.ntp.org

按照Cloudera 的官方建议,所有的CDH节点和Cloudea Manager节点都需要启动ntpd服务。要不然会报如下错误:

1)此角色的主机的运行状况为不良。 以下运行状况测试不良: 时钟偏差.

2)The host’s NTP service is not synchronized to any remote server.

解决方法如下: 先配置一台NTP服务,然后所有的CDH节点都作为此NTP服务的客户端。 1,NTPD服务,hadoop35.test.com,此机器负责与外部网络的NTPD服务同步标准时间,并作为局域网内的NTPD服务器。 2,NTPD客户端,10.10.25.35,36,37,38 和 10.10.25.43,44,45,46,这些机器与hadoop35.test.com上的NTPD服务同步时间。

配置步骤:

a,配置内网NTP-Server(管理节点)

(1) 允许客户机的配置

修改ntp.conf配置文件 vi /etc/ntp.conf

①、第一种配置:允许任何IP的客户机都可以进行时间同步 将restrict default kod nomodify notrap nopeer noquery这行修改成:

restrict default nomodify

②、第二种配置:只允许10.10.25.*网段的客户机进行时间同步 在restrict default nomodify notrap noquery(表示默认拒绝所有IP的时间同步)之后增加一行: restrict 10.10.25.0 mask 255.255.255.0 nomodify

(2) 同步时间设置 ①通过网络同步时间

server 0.centos.pool.ntp.orgserver 1.centos.pool.ntp.orgserver 2.centos.pool.ntp.org

②使用本地时间

server 127.127.1.0     # local clockfudge  127.127.1.0 stratum 10

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

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

synchronised to NTP server (80.241.0.72) at stratum 2 time correct to within 144 mspolling server every 64 s

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

设置ntp服务,开机自启动:chkconfig ntpd on

b,配置NTP客户端(受管节点)

修改ntp.conf配置文件 vi /etc/ntp.conf 通过 hadoop35.test.com 同步时间

server  hadoop35.test.com

配置文件完成,保存退出,启动服务,执行如下命令:service ntpd start 设置ntp服务,开机自启动:chkconfig ntpd on

客户端校验配置

ntpq -p查询上级时间服务器

ntpstat 查询状态

6.优化虚拟内存需求率(所有节点)

1)检查虚拟内存需求率

cat /proc/sys/vm/swappiness

显示如下:

60

2)临时降低虚拟内存需求率

sysctl vm.swappiness=0

3)永久降低虚拟内存需求率

使用命令 vi /etc/sysctl.conf 增加vm.swappiness = 0

并运行如下命令使生效

sysctl -p
7.解决透明大页面问题(所有节点)

1)检查透明大页面问题

cat /sys/kernel/mm/transparent_hugepage/defrag

如果显示为:

[always] madvise never

2)临时关闭透明大页面问题

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

确认配置生效:

cat /sys/kernel/mm/transparent_hugepage/defrag

应该显示为:

always madvise [never]

3)配置开机自动生效

使用命令 vi /etc/rc.local,加入如下内容echo never > /sys/kernel/mm/transparent_hugepage/defrag
8.安装Oracle的Java(主节点安装,其他节点卸载)

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

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

在这里使用了cloudera仓库中的jdk的rpm安装包,使用rpm -ivh 包名进行安装。 配置环境变量:

修改profile vi /etc/profile

export JAVA_HOME=/usr/java/jdk1.7.0_67-clouderaexport JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=${JAVA_HOME}/bin:$PATH

立即生效 source /etc/profile

9.安装配置MariaDB(管理节点)

a. 确保/var/lib/mysql目录有足够大的磁盘空间

b. 卸载自带的mysql。

yum remove mysql

c. 创建MariaDB yum仓库

vi /etc/yum.repos.d/MariaDB.repo

添加以下内容

[mariadb]name = MariaDBbaseurl = http://yum.mariadb.org/10.1/centos6-amd64gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDBgpgcheck=1

d. 安装MariaDB

yum install MariaDB-server MariaDB-client MariaDB-devel

e. 配置my.conf

vi /etc/my.cnf    

用以下内容替换

[mysqld]transaction-isolation = READ-COMMITTED# Disabling symbolic-links is recommended to prevent assorted security risks;# to do so, uncomment this line:# symbolic-links = 0key_buffer = 16Mkey_buffer_size = 32Mmax_allowed_packet = 32Mthread_stack = 256Kthread_cache_size = 64query_cache_limit = 8Mquery_cache_size = 64Mquery_cache_type = 1max_connections = 550#expire_logs_days = 10#max_binlog_size = 100M#log_bin should be on a disk with enough free space. Replace '/var/lib/mysql/mysql_binary_log' with an appropriate path for your system#and chown the specified folder to the mysql user.log_bin=/var/lib/mysql/mysql_binary_logbinlog_format = mixedread_buffer_size = 2Mread_rnd_buffer_size = 16Msort_buffer_size = 8Mjoin_buffer_size = 8M# InnoDB settingsinnodb_file_per_table = 1innodb_flush_log_at_trx_commit  = 2innodb_log_buffer_size = 64Minnodb_buffer_pool_size = 4Ginnodb_thread_concurrency = 8innodb_flush_method = O_DIRECTinnodb_log_file_size = 512M[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid

h. 启动MariaDB

service mysql start

g. 查看MariaDB版本

mysql --version

输出

mysql  Ver 15.1 Distrib 10.1.21-MariaDB, for Linux (x86_64) using readline 5.1

h. 设置开机启动

chkconfig mysql on

i. 初始化数据库

$ sudo /usr/bin/mysql_secure_installation[...]Enter current password for root (enter for none):OK, successfully used password, moving on...[...]Set root password? [Y/n] yNew password:Re-enter new password:Remove anonymous users? [Y/n] Y[...]Disallow root login remotely? [Y/n] N[...]Remove test database and access to it [Y/n] Y[...]Reload privilege tables now? [Y/n] YAll done!

j. 使用mysql -uroot -p进入mysql命令行,创建数据库和用户:

create database hive DEFAULT CHARACTER SET utf8;grant all on hive.* TO 'hive'@'%' IDENTIFIED BY 'hive';create database hue DEFAULT CHARACTER SET utf8;grant all on hue.* TO 'hue'@'%' IDENTIFIED BY 'hue';create database oozie DEFAULT CHARACTER SET utf8;grant all on oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie';    

刷新 flush privileges;

10.安装mysql JDBC 驱动(管理节点)

下载mysql JDBC 驱动放到目录 /usr/share/java/ 并修改名为mysql-connector-java.jar 下载地址http://www.mysql.com/downloads/connector/j/5.1.html.

五、安装配置 Cloudera Manager(管理节点)


1.建立Cloudera Manager安装文件自定义存储库

a.安装httpd服务器

查询一下是否已经安装了apache

rpm -qa httpd   

如果还没有则进行安装

yum -y install httpd 

启动apache

service httpd start

开机自启动

chkconfig httpd on

b.将Cloudera Manager仓库镜像包cm5.10.0-centos6.tar.gz

解压到/var/www/html/cm目录,文件目录结构如下

输入图片说明

2.通过rpm安装包本地安装 Cloudera Manager

到目录 /var/www/html/cm/5/RPMS/x86_64

 yum --nogpgcheck localinstall cloudera-manager-daemons-5.10.*.rpm cloudera-manager-server-5.10.*.rpm enterprise-debuginfo-5.10.*.rpm
3.Parcel和csd格式文件上传

a. 上传下列文件到Parcel包的存放路径: /opt/cloudera/parcel-repo/

    CDH-5.10.0-1.cdh5.10.0.p0.41-el6.parcel                 CDH-5.10.0-1.cdh5.10.0.p0.41-el6.parcel.sha             KUDU-1.2.0-1.cdh5.10.0.p0.55-el6.parcel                 KUDU-1.2.0-1.cdh5.10.0.p0.55-el6.parcel.sha             manifest.json                                       

b.上传最新的kudu csd文件到csd包存放路径: /opt/cloudera/csd/

KUDU-5.10.0.jar

最后目录结构如下:

输入图片说明

输入图片说明

4.配置 Cloudera Manager Server 数据库

使用命令scm_prepare_database.sh创建Cloudera Manager Server数据库配置文件

命令格式如下

/usr/share/cmf/schema/scm_prepare_database.sh database-type [options] database-name username password

如:

/usr/share/cmf/schema/scm_prepare_database.sh mysql -hlocalhost -uroot -p123456 --scm-host localhost scm scm scm

执行完成后生成数据库配置文件/etc/cloudera-scm-server/db.properties

# Auto-generated by scm_prepare_database.sh on Tue Feb 28 18:23:16 CST 2017## For information describing how to configure the Cloudera Manager Server# to connect to databases, see the "Cloudera Manager Installation Guide."#com.cloudera.cmf.db.type=mysqlcom.cloudera.cmf.db.host=localhostcom.cloudera.cmf.db.name=scmcom.cloudera.cmf.db.user=scmcom.cloudera.cmf.db.password=scmcom.cloudera.cmf.db.setupType=EXTERNAL

参考链接:http://www.cloudera.com/documentation/enterprise/latest/topics/cm_ig_installing_configuring_dbs.html

5.启动Cloudera Manager Server
service cloudera-scm-server start

等待大概两分钟,访问 http://10.10.25.35:7180/ 进入管理端 (登陆名:admin 密码:admin)

6.配置

输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明

六、修改impala参数

1、时区问题:

默认impala配置不是中国的时区,所以在用from_unixtime的时候,有误差。 解决方案:impala启动时加 -use_local_tz_for_unix_timestamp_conversions=true

在cdh里面 impala->配置->impala Daemon ->Impala Daemon 命令行参数高级配置代码段(安全阀)

 -use_local_tz_for_unix_timestamp_conversions=true

七、安装配置 kudu 服务

安装参考

http://www.cloudera.com/documentation/betas/kudu/latest/topics/kudu_installation.html 的 Install Kudu Using Parcels 章节。


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明

输入图片说明


输入图片说明


八、验证安装情况

登录 # impala-shell

a.查看impala-shell版本

Starting Impala Shell without Kerberos authenticationConnected to hadoop36.test.com:21000Server version: impalad version 2.7.0-cdh5.10.0 RELEASE (build 785a073cd07e2540d521ecebb8b38161ccbd2aa2)***********************************************************************************Welcome to the Impala shell.(Impala Shell v2.7.0-cdh5.10.0 (785a073) built on Fri Jan 20 12:03:56 PST 2017)To see live updates on a query's progress, run 'set LIVE_SUMMARY=1;'.***********************************************************************************[hadoop36.test.com:21000] > 

执行

select version();

显示

Query: select version()Query submitted at: 2017-03-01 11:52:01 (Coordinator: http://hadoop36.test.com:25000)Query progress can be monitored at: http://hadoop36.test.com:25000/query_plan?query_id=3240bf5cc2cbfa7b:390c36da00000000+------------------------------------------------------------------------------------------+| version()                                                                                |+------------------------------------------------------------------------------------------+| impalad version 2.7.0-cdh5.10.0 RELEASE (build 785a073cd07e2540d521ecebb8b38161ccbd2aa2) || Built on Fri Jan 20 12:03:56 PST 2017                                                    |+------------------------------------------------------------------------------------------+Fetched 1 row(s) in 1.11s

b.使用impala-shell

CREATE DATABASE impala_kudu;USE impala_kudu;CREATE TABLE my_first_table (  id BIGINT PRIMARY KEY,  name STRING)PARTITION BY HASH PARTITIONS 5STORED AS KUDU  TBLPROPERTIES('kudu.master_addresses' = 'hadoop36.test.com:7051,hadoop37.test.com:7051,hadoop38.test.com:7051,hadoop43.test.com:7051,hadoop44.test.com:7051,hadoop45.test.com:7051,hadoop46.test.com:7051') ;insert into my_first_table values(100,'张三');select * from my_first_table;

九、常见问题

问题1:在主节点初始化 CM5的数据库报错:ld-linux.so.2   bad ELF interpreter解决:安装 glibc 和 glibc.i686问题2:安装主机时报错报错:ProtocolError: <ProtocolError for 127.0.0.1/RPC2: 401 Unauthorized>解决:$> ps -ef | grep supervisord$> kill -9 <processID>/opt/cm-5.6.0/etc/init.d/cloudera-scm-agent restart问题3:server启动时,日志提示端口被占用。解决:关闭java进程。问题4:web安装,当前管理的主机显示都是本地地址解决:注释/etc/hosts 的loaclhost ,在检查agent日志的报错。重启所有agent重启server问题5:web数据库设置,登入被拒绝解决:grant all privileges on *.* to 'hive'@'cdh1' identified by '123456' with grant option;FLUSH privileges;问题6:web安装时,群集设置 HDFS格式失败解决:删除原有的/dfs问题7:web安装时,群集设置HDFS 创建/tmp失败解决:ntp一定启动服务器,不能光用命令同步。(这个好像不是问题的所在,但是ntp服务必须要启动的)还出现,再重试试试。问题8:web管理页面提示时间偏差解决:检查ntpdc -c loopinfoName or service not knownvim /etc/hosts添加 本机IP对应localhost 地址问题9报错    JDBC driver cannot be found. Unable to find the JDBC database jar on host解决下载jar包: MySQL-connector-Java-5.1.27.jar重命名:mv mysql-connector-java-5.1.27.jar mysql-connector-java.jar移动:mv mysql-connector-java.jar  /usr/share/java/问题10登录用户共同私钥私钥文件id_rsa所在位置$ cd ~/.ssh/将此文件下载后,在cm在线安装界面上传即可。问题11添加zookeeper实例错误当有一台机器正在跑zookeeper的时候,再添加其他的,就会报错如下Starting these new ZooKeeper Servers may cause the existing ZooKeeper Datastore to be lost. Try again after restarting any existing ZooKeeper Servers with outdated configurations. If you do not want to preserve the existing Datastore, you can start each ZooKeeper Server from its respective Status page.将正在运行的zookeeper实例停止,然后再三台一起启动即可。问题12启动kudu失败,错误日志提示Service unavailable: Cannot initialize clock: Error reading clock. Clock considered unsynchronized现状:到kudu实例节点运行ntpstat 输出unsynchronised polling server every 64 s  发现节点未完成同步,解决: 检查ntp服务,或等待2分钟后再查看是否完成同步

十、非root用户方案

1.所有节点添加普通用户(在本例中使用hadoop)

useradd -u 1050 hadoop

2.让普通用户获得sudo执行操作权限

编辑sudoers文件 vi /etc/sudoers

在# %wheel        ALL=(ALL)       NOPASSWD: ALL下增加%hadoop        ALL=(ALL)       NOPASSWD: ALL

允许用户组hadoop里面的用户执行sudo命令,并且在执行的时候不输入密码.

3.ssh免密登录

同准备步骤中的免密登录配置方式一致,用户hadoop用户生成秘钥,拷贝到其他机器的hadoop用户名目录,注意目录权限。

参考

http://blog.csdn.net/ymh198816/article/details/52423200

http://www.cnblogs.com/jasondan/p/4011153.html?utm_source=tuicool&utm_medium=referral

http://www.cloudera.com/documentation/enterprise/latest/topics/cm_ig_install_path_b.html

https://mariadb.com/kb/en/mariadb/yum/

http://www.aboutyun.com/thread-9006-1-1.html

卸载cloudera参考

http://www.cloudera.com/documentation/enterprise/latest/topics/cm_ig_uninstall_cm.html


原创粉丝点击