2017 08 04 版本 初始1.0 (受用以后的一赞,将是鄙人持久的动力)
目录java
一,集群规划
二,linux系统环境准备
1,安装linux centos6.5
2,配置网络
3,增长普通用户
4,配置普通用户的sudo权限
5,关闭防火墙
6,禁用Selinux
7, 设置文件打开数量和用户最大进程数
8,yum源跟换和添加
9,卸载Centos自带的JDK
10,安装JDK
11 设置将 /proc/sys/vm/swappiness 设置为 0 (修改swap空间的swappiness,下降对硬盘的缓存 )
12,到这一步,集群公共环境已经准备完毕,开始克隆mini1虚拟机 —>mini2,mini3
13,集群时间同步(主节点)
14,配置免密登陆
三,cdh安装
1,安装mysql(须要root权限)并建立CDH相关的表【只须要在 mini1节点安装】
3,在主节点【mini1】Cloudera Manager Server ,如下方式随便选择一种【建议选择离线安装】
4,拷贝mysql的链接驱动【mysql-connector-java-5.1.28.jar】到该目录下 /usr/share/cmf/lib
5,在主节点【mini1】初始化CM5的数据库
6,上传CHD5大数据服务组件资源包
7,主节点【mini1】上启动Cloudera Manager Server
8,使用netstat-nltp命令查看【mini1】端口7180 是否启动成功,若是出现这个端口
9,在节点【mini1,mini2,mini3】Cloudera Manager agent ,如下方式随便选择一种【建议选择离线安装】
10,修改agent所在的节点【mini1,mini2,mini3】配置文件config.ini内容
11,启动Cloudera Manager
四,执行任务 验证
五,Clouder Manager Server和agent 安装过程异常状况处理 node
一,集群规划
【注意】:至少三台节点,主节点至少6G内存,另外两台至少4G内存,不然安装CDH5会由于运行环境不达标会报各类错误
|————–|———–|————-|—————-|———–|——————–|————-|python
主机/服务 | Server | Agent | zookeeper | namenode | secondarynamenode | datanode |
---|---|---|---|---|---|---|
mini1 主节点 | 是 | 是 | 是 | 是 | 是 | |
mini2 从节点 | 是 | 是 | 是 | 是 | ||
mini3 从节点 | 是 | 是 | 是 | |||
二,linux系统环境准备mysql
1,安装linux centos6.5
1.1 主机名必须为小写的英文字符
1.2 centos 6.9 推荐安装linux
2,配置网络web
2.1 命令: vi /etc/sysconfig/network-scripts/ifcfg-eth0 以下配置: ONBOOT=yes BOOTPROTO=static IPADDR=192.168.80.81 GATEWAY=192.168.80.1 NETMASK=255.255.255.0 DNS1=114.114.114.114 2.2 重启网卡命令:service network restart 2.3 拼百度:ping baidu.com 若是能拼通说明网络配置正确(网络不通,不能进行后面步骤) 2.4 配置Ip与主机名映射,命令:vi /etc/hosts 192.168.80.81 mini1 192.168.80.82 mini2 192.168.80.83 mini3 2.5 禁用IPv6 echo "alias net-pf-10 off" >> /etc/modprobe.d/dist.conf echo "alias ipv6 off" >> /etc/modprobe.d/dist.conf
3,增长普通用户
命令:useradd hadoop(增长用户)
命令:passwd hadoop (修改用户密码)sql
4,配置普通用户的sudo权限
命令:vi /etc/sudoers
hadoop ALL=(root)NOPASSWD:ALLshell
5,关闭防火墙
service iptables stop (暂时关闭)
chkconfig iptables off(永久性关闭)数据库
6,禁用Selinux
vi /etc/sysconfig/selinux
SELINUX=disabled json
7, 设置文件打开数量和用户最大进程数
查看文件打开数量 ulimit -a 查看用户最大进程数 ulimit -u vi /etc/security/limits.conf 增长如下内容: * soft nofile 65535 * hard nofile 65535 * soft nproc 32000 * hard nproc 32000
8,yum源跟换和添加
8.1 更换yum 源为163,请执行如下命令 cd /etc/yum.repos.d yum install -y wget (下载资源命令) rename .repo .repo.bak * wget http://mirrors.163.com/.help/CentOS6-Base-163.repo yum clean all yum makecache yum install lrzsz 8.2 添加cloudera-manager.repo源 【全部节点都要】 cd /etc/yum.repos.d/ vi cloudera-manager.repo 添加如下内容后保存退出 [cloudera-manager] # Packages for Cloudera Manager, Version 5, on RedHat or CentOS 6 x86_64 name=Cloudera Manager baseurl=https://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5/ gpgkey =https://archive.cloudera.com/cm5/redhat/6/x86_64/cm/RPM-GPG-KEY-cloudera gpgcheck = 1
9,卸载Centos自带的JDK
sudo rpm -qa|grep jdk 或 sudo rpm -qa|grep java
sudo rpm -e –nodeps xxx yyy zzz
10,安装JDK
10.1 安装jdk输入命令:sudo yum install oracle-j2sdk1.7 10.2 配置环境变量: vi /etc/profile 在文件的末尾添加一下内容 export JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera export PATH=$PATH:$JAVA_HOME/bin 10.3 执行如下命令 (root用户)echo "JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera" >> /etc/environment
11 设置将 /proc/sys/vm/swappiness 设置为 0 (修改swap空间的swappiness,下降对硬盘的缓存 )
(root用户)输入:echo "vm.swappiness=0" >> /etc/sysctl.conf )
12,到这一步,集群公共环境已经准备完毕,开始克隆mini1虚拟机 —>mini2,mini3
开始修改mini2-3 四台虚拟机的主机名和ip地址 12.1 修改主机名 vi /etc/sysconfig/network 12.2 修改网络 vi /etc/sysconfig/network-script/ifcfg-eth0 删掉UUID HWADDR 配置静态地址 而后: rm -rf /etc/udev/rules.d/70-persistent-net.rules 而后 reboot
13,集群时间同步(主节点)
13.1 rpm -qa |grep ntpd 》》没有安装则须要安装此服务 》》yum install ntp 13.2 vi /etc/ntp.conf 去掉这个注释,将地址改为网段地址 restrict 192.168.80.0 mask 255.255.255.0 nomodify notrap 注释掉这几个 #server 0.centos.pool.ntp.org iburst #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst 添加一下内容 server 127.127.1.0 fudge 127.127.1.0 startum 10 13.3 vi /etc/sysconfig/ntpd 加入下面一句话,用于配置boot时间和系统时间同步 SYNC_HWCLOCK=yes 13.4 启动ntpd服务器 sudo service ntpd start sudo service ntpd status chkconfig ntpd on chkconfig --list |grep ntpd 13.5 客户机配置(从节点) 使用 root用户操做 输入 crontab -e 命令进入编辑状态,而后输入一下内容(该任务保存在目录/var/spool/cron 下,必须用root用户才能看到 ) * * * * * /usr/sbin/ntpdate mini1
14,配置免密登陆
**配置主机之间的免密ssh登录
假如 mini1 要登录 mini2
在mini1上操做:
%%首先生成密钥对,命令以下:
ssh-keygen (提示时,直接回车便可)
将生产的秘钥copy到mini2上,命令以下
ssh-copy-id mini2
若是出现 ssh-copy-id: command not found 须要执行该命令(yum -y install openssh-clients)
三,cdh安装
1,安装mysql(须要root权限)并建立CDH相关的表【只须要在 mini1节点安装】
1.1 查看CentOS自带mysql是否已安装。 输入:sudo yum list installed | grep mysql 1.2 如有自带安装的mysql,如何卸载CentOS系统自带mysql数据库? 输入:sudo yum -y remove mysql-libs.x86_64,如有多个依赖文件则依次卸载。 当结果显示为Complete!即卸载完毕。 1.3 查看yum库上的mysql版本信息(CentOS系统须要正常链接网络)。 输入:sudo yum list | grep mysql 或 sudo yum -y list mysql* 1.4 使用yum安装mysql数据库。 输入:sudo yum -y install mysql-server mysql mysql-devel ,命令将:mysql-server、mysql、mysql-devel都安装好,当结果显示为“Complete!”即安装完毕。 注:安装mysql只是安装了数据库,只有安装mysql-server才至关于安装了客户端。 1.5 设置开机启动:sudo chkconfig mysqld on 1.6 启动mysql 输入:sudo service mysqld start 1.7 修改mysql密码 安装好mysql是没有密码的,须要进行设置,进入msyql将密码修改成你本身的,我这里将密码修改为root 输入:mysql -uroot mysql> use mysql; mysql> update user set password=password('root') where user='root' and host='localhost'; mysql> flush privileges; 1.8 验证密码是否修改为功 输入:mysql -uroot -proot 可以进入mysql的shell界面,表明成功。 1.9 修改mysql的访问权限 输入:mysql -uroot -proot mysql> grant all privileges on *.* to 'root'@'192.168.0.110' identified by 'root'; mysql> flush privileges; 补充 select SUBSTRING_INDEX(host,':',1) as ip , count(*) from information_schema.processlist group by ip; 1.10 建立表cdh相关默认库(也能够后建立) 输入命令;mysql -uroot -proot 进入mysql,执行如下sql建库语句 mysql> create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci; mysql> create database reports DEFAULT CHARSET utf8 COLLATE utf8_general_ci; mysql> create database navigatoraudit DEFAULT CHARSET utf8 COLLATE utf8_general_ci; mysql> create database navigatormetadata DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
3,在主节点【mini1】Cloudera Manager Server ,如下方式随便选择一种【建议选择离线安装】
3.1 在线安装sudo yum install cloudera-manager-daemons cloudera-manager-server 3.2 离线安装 资源下载地址:https://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5/ 上传三个server的资源包到mini1节点上 cloudera-manager-server-5.11.0-1.cm5110.p0.101.el6.x86_64.rpm cloudera-manager-server-db-2-5.11.0-1.cm5110.p0.101.el6.x86_64.rpm cloudera-manager-daemons-5.11.0-1.cm5110.p0.101.el6.x86_64.rpm 安装 yum install -y postgresql-server rpm -ivh cloudera-manager-daemons-5.11.0-1.cm5110.p0.101.el6.x86_64.rpm rpm -ivh cloudera-manager-server-5.11.0-1.cm5110.p0.101.el6.x86_64.rpm rpm -ivh cloudera-manager-server-db-2-5.11.0-1.cm5110.p0.101.el6.x86_64.rpm
4,拷贝mysql的链接驱动【mysql-connector-java-5.1.28.jar】到该目录下 /usr/share/cmf/lib
5,在主节点【mini1】初始化CM5的数据库
/usr/share/cmf/schema/scm_prepare_database.sh mysql -h localhost -uroot -proot –scm-host localhost scm root root 不要粘贴手动收入
6,上传CHD5大数据服务组件资源包
下载地址【我已经下载了,无需再次下载】:http://archive.cloudera.com/cdh5/parcels/latest/
cd /opt/cloudera/parcel-repo
上传:CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel和CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel.sha以及manifest.json 这个目录下 /opt/cloudera/parcel-repo
使用 chmod -R guo+wr xxx 给上述三个文件配置可写可读的权限
7,主节点【mini1】上启动Cloudera Manager Server
service cloudera-scm-server start
8,使用netstat-nltp命令查看【mini1】端口7180 是否启动成功,若是出现这个端口
可使用浏览器访问http://mini1:7180 (初始帐号密码为 admin admin)
9,在节点【mini1,mini2,mini3】Cloudera Manager agent ,如下方式随便选择一种【建议选择离线安装】
9.1 在线安装 sudo yum install cloudera-manager-agent cloudera-manager-daemons 9.2 离线安装 上传三个server的资源包到mini1节点上 cloudera-manager-agent-5.11.0-1.cm5110.p0.101.el6.x86_64.rpm cloudera-manager-daemons-5.11.0-1.cm5110.p0.101.el6.x86_64.rpm 安装顺序 yum install -y openssl-devel perl bind-utils libxslt cyrus-sasl-plain cyrus-sasl-gssapi portmap fuse-libs /lib/lsb/init-functions httpd mod_ssl python-psycopg2 MySQL-python rpm -ivh cloudera-manager-daemons-5.11.0-1.cm5110.p0.101.el6.x86_64.rpm rpm -ivh cloudera-manager-agent-5.11.0-1.cm5110.p0.101.el6.x86_64.rpm
10,修改agent所在的节点【mini1,mini2,mini3】配置文件config.ini内容
sudo vi /etc/cloudera-scm-agent/config.ini
server_host=mini1 (这里我是以mini1做为server节点)
11,启动Cloudera Manager
在从节点【mini1,mini2,mini3】上启动Cloudera Manager Server
sudo service cloudera-scm-agent start
四,执行任务
在安装完hdfs,yarn服务时能够模拟执行任务
hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 10 100
五,Clouder Manager Server和agent 安装过程异常状况处理
1 异常1
已启用“透明大页面”,它可能会致使重大的性能问题。版本为“CentOS release 6.3
(Final)”且版本为“2.6.32-279.el6.x86_64”的 Kernel 已将 enabled 设置为“[always]
never”,并将 defrag 设置为“[always] never”。请运行“echo never >
/sys/kernel/mm/redhat_transparent_hugepage/defrag”以禁用此设置,而后将同一命令添加到一个
init 脚本中,如 /etc/rc.local,这样当系统重启时就会设置它
解决方案(每一个节点)
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never >> /etc/rc.local
2 异常2
Cloudera 建议将 /proc/sys/vm/swappiness 设置为 0。当前设置为 60。使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf 以在重启后保存该设置。您能够继续进行安装,但可能会遇到问题,Cloudera Manager 报告您的主机因为交换运行情况不佳。如下主机受到影响:
解决方案:
echo 0 > /proc/sys/vm/swappiness
sysctl vm/swappiness
echo ‘vm.swappiness = 0’>/etc/sysctl.conf
sysctl -p
3 异常3
pstree: 未找到命令
解决方案
yum install -y psmisc
4,找不到jdk
输入:sudo vi /etc/sudoers ,在sudoers最后面添加如下内容
Defaults env_keep+=JAVA_HOME
输入:sudo vi /etc/default/bigtop-utils 在 bigtop-utils 文件中添加如下内容
export JAVA_HOME=/usr/java/latest
而后执行如下命令
source /etc/default/bigtop-utilssource /etc/default/bigtop-utils
5,异常
若是出现agent主机不良情况
Error, CM server guid updated, expected
85587073-270d-43d9-a44a-e213d9f7e45b, received
4c1402a5-8364-4598-a382-0c760710e897
,尝试运行如下命令
rm -rf /var/lib/cloudera-scm-agent/cm_guid
以后重启agent
service cloudera-scm-agent restart
6,Hive Metastore canary 建立数据库失败
问题描述: Hive Metastore canary 建立数据库失败
日志:
Caused by: org.datanucleus.exceptions.NucleusException: Attempt to
invoke the “BONECP” plugin to create a ConnectionPool gave an error :
The specified datastore driver (“com.mysql.jdbc.Driver”) was not found
in the CLASSPATH. Please check your CLASSPATH specification, and the
name of the driver
问题定位:读取hive数据时报找不到mysql驱动 问题解决: * 尝试1 /opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/hive/lib cp /opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/sqoop/lib/mysql-connector-java-5.1.36-bin.jar /opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/hive/lib * 尝试2 在/etc/hive/conf.cloudera.hive/hive-env.sh中发现一句$(find /usr/share/java/mysql-connector-java.jar 因而将驱动拷贝到指定目录解决问题 cp /mnt/mysql-connector-java-5.1.36-bin.jar /usr/share/java/mysql-connector-java.jar cp /mnt/mysql-connector-java-5.1.36-bin.jar /opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/hadoop 解决问题