Hadoop版本:
Apache:开源免费
CDH: Cloudera
只支持64位操作系统
HDP: Hortonworks
企业版本:
apache -> cdh | hdp
面试题:
apache与cdh的比较??为什么选择了cdh???
需要安装组件介绍:
Zk:
Hdfs:
Yarn:
集群种类和规模介绍:
开发:(大数据中少)
测试:
生产:
安装前环境准备:
安装cm 和 cdh的方法大概有如下:
1、tar 包
http://archive.cloudera.com/cm5/cm/5/
http://archive.cloudera.com/cdh5/cdh/5/
2、rpm 包
http://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5.3.6/
http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/
3、parcels 包
cdh 4.1.2 以后才有的
官方推荐的安装方式
Cloudera Manager进行安装
环境介绍:
Centos 6.5
hadoop01 192.168.216.111
hadoop02 192.168.216.112
hadoop03 192.168.216.113
禁Selinux:(不关闭安装cm第一步就出错)
禁用selinux,vi /etc/selinux/config,按照图示修改:(重启生效)
查看selinux 的状态
/usr/sbin/sestatus -v
disabled 即关闭状态
如果没关闭,则用如下命令关闭,不用重启机器。实在不行重启机器。
setenforce 0
[root@hadoop01 ~]# /usr/sbin/sestatus -v
SELinux status: disabled
卸载自带open JDK
$ sudo rpm -qa|grep java
$ sudo rpm -e --nodeps *.jdk
能出来如下即可:怎么安装都可以
[root@hadoop01 ~]# which java
/usr/local/jdk1.7.0_79/bin/java
[root@hadoop01 ~]# java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
相互设置ssh免密登陆(所有节点):
[root@hadoop01 ~]# ssh-keygen -t rsa 一路回车
[root@hadoop01 ~]# ssh-copy-id hadoop01
[root@hadoop01 ~]# ssh-copy-id hadoop02
[root@hadoop01 ~]# ssh-copy-id hadoop03
[root@hadoop02 ~]# ssh-keygen -t rsa
[root@hadoop02 ~]# ssh-copy-id hadoop01
[root@hadoop02 ~]# ssh-copy-id hadoop02
[root@hadoop02 ~]# ssh-copy-id hadoop03
[root@hadoop03 ~]# ssh-keygen -t rsa
[root@hadoop03 ~]# ssh-copy-id hadoop01
[root@hadoop03 ~]# ssh-copy-id hadoop02
[root@hadoop03 ~]# ssh-copy-id hadoop03
安装配置MySQL(主节点)
通过yum install mysql-server安装mysql服务器(怎么安装都行)。chkconfig mysqld on设置开机启动,并service mysql start启动mysql服务,并根据提示设置root的初试密码:mysqladmin -u root password 'root'。
mysql -uroot -pxxxx进入mysql命令行,创建以下数据库:
#hive
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#activity monitor
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
# Oozie
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#Hue
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#授权root用户在主节点拥有所有数据库的访问权限
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;
ntpd 安装:(保证每个节点时间同步)
安装这个组件主要是用来做时间同步(每个节点)
集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。 具体思路如下:
master节点作为ntp服务器与外界对时中心同步时间,随后对所有datanode节点提供时间同步服务。
所有datanode节点以master节点为基础同步时间。
所有节点安装相关组件:yum install ntp。完成后,所有配置开机启动:chkconfig ntpd on,检查是否设置成功:chkconfig --list ntpd其中2-5为on状态就代表成功。
主节点:
# vi /etc/ntp.conf
#server 210.72.145.44 #这是中国国家授时中心的IP (不可用,可搜索国内常用ntp服务器ip)
server s2b.time.edu.cn #这个是清华大学ntp服务器ip之一 保证可用即可
启动:service ntpd start
开机启动:chkconfig ntpd on
查看NTP服务的运行状况: watch ntpq -p
其他节点:hadoop02 hadoop03 做如上步骤后启动即可
然后启动:service ntpd start
设置文件打开数量和用户最大进程数
文件打开数量
ulimit -a
用户最大进程数
ulimit -u
设置
sudo vi /etc/security/limits.conf
内容:
soft nofile 65535
hard nofile 65535
soft nproc 32000
hard nproc 32000
软件下载网址:
http://archive.cloudera.com/cm5/
cm-5.3.6 bin文件
http://archive.cloudera.com/cm5/installer/5.3.6/
http://archive.cloudera.com/cm5/installer/5.3.6/cloudera-manager-installer.bin
cm-5.3.6 依赖rpm包
http://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5.3.6/
http://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5.3.6/RPMS/x86_64/
安装Cloudera Manager Server 和Agent:
主节点解压安装
cloudera manager的目录默认位置在/opt下,解压:tar xzvf cloudera-manager*.tar.gz将解压后的cm-5.3.6和cloudera目录放到/opt目录下。
[root@hadoop01 opt]# tar -zxvf /home/cloudera-manager-el6-cm5.3.6_x86_64.tar.gz -C /opt/
为Cloudera Manager 5建立数据库
首先需要去MySql的官网下载JDBC驱动,http://dev.mysql.com/downloads/connector/j/,解压后,找到mysql-connector-java-5.1.6-bin.jar,放到/opt/cm-5.3.6/share/cmf/lib/中。
在主节点初始化CM5的数据库:
[root@hadoop01 opt]# /opt/cm-5.3.6/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -proot --scm-host localhost scm scm scm
Agent配置
修改/opt/cm-5.3.6/etc/cloudera-scm-agent/config.ini中的server_host为主节点的主机名。
[root@hadoop01 opt]# vim /opt/cm-5.3.6/etc/cloudera-scm-agent/config.ini
serverhost = hadoop01
同步Agent到其他节点
scp -r /opt/cm-5.3.6/ root@hadoop02:/opt/
scp -r /opt/cm-5.3.6/ root@hadoop03:/opt/
在所有节点创建cloudera-scm用户:
useradd --system --home=/opt/cm-5.3.6/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
准备Parcels,用以安装CDH5
将CHD5相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中。
如果没有对应目录,则自己创建:(原则上只在主节点即可)
[root@hadoop01 ~]# mkdir -p /opt/cloudera/parcel-repo/
[root@hadoop02 ~]# mkdir -p /opt/cloudera/parcel-repo/
[root@hadoop03 ~]# mkdir -p /opt/cloudera/parcel-repo/
相关的文件如下:
CDH-5.3.6-1.cdh5.3.6.p0.11-el6.parcel
CDH-5.3.6-1.cdh5.3.6.p0.11-el6.parcel.sha1
manifest.json
[root@hadoop01 opt]# cp /home/hadoop/cdh-5.3.6/CDH-5.3.6-1.cdh5.3.6.p0.11-el6.parcel /opt/c
loudera/parcel-repo/CDH-5.3.6-1.cdh5.3.6.p0.11-el6.parcel
[root@hadoop01 opt]# cp /home/hadoop/cdh-5.3.6/CDH-5.3.6-1.cdh5.3.6.p0.11-el6.parcel.sha1 /opt/cloudera/parcel-repo/CDH-5.3.6-1.cdh5.3.6.p0.11-el6.parcel.sha
[root@hadoop01 opt]# cp /home/hadoop/cdh-5.3.6/manifest.json /opt/cloudera/parcel-repo/
最后将CDH-5.3.6-1.cdh5.3.6.p0.11-el6.parcel.sha1,重命名为CDH-5.3.6-1.cdh5.3.6.p0.11-el6.parcel.sha,这点必须注意,否则,系统会重新下载CDH-5.3.6-1.cdh5.3.6.p0.11-el6.parcel.sha1文件。
相关启动脚本:
通过[root@hadoop01 opt]# /opt/cm-5.3.6/etc/init.d/cloudera-scm-server start启动服务端。
通过[root@hadoop01 opt]# /opt/cm-5.3.6/etc/init.d/cloudera-scm-agent start启动Agent服务。
我们启动的其实是个service脚本,需要停止服务将以上的start参数改为stop就可以了,重启是restart。
CDH5的安装配置
Cloudera Manager Server和Agent都启动以后,就可以进行CDH5的安装配置了。
Cms的架构图:
Cloudera manager server (CMS)想管理集群,则需要有自己的小弟cloudare agent,这里相当于主从架构,cms推荐将自己的这台服务器也作为agent,所以我们需要在自己的hadoop01
、hadoop02、hadoop03上安装agent。(然后使用cms界面操作即可)
cms浏览器操作:
这时可以通过浏览器访问主节点的7180端口测试一下了(由于CM Server的启动需要花点时间,这里可能要等待一会才能访问),默认的用户名和密码均为admin:
登录后选择免费版本一直继续即可
如下是环境检测错误,不同版本错误不一样:
问题 1:
个别主机正确地解析了自己的主机名称。
查询存在冲突的初始脚本时发现以下错误。利用‘chkconfig’来禁用初始脚本以避免Cloudera Manager 管理的后台程序存在冲突。通常,您可以继续进行安装,但重启后,由于冲突流程启动可能失败。
将头两行去掉
将域名和主机名调换位置
将dns配置成本地网关
如果为虚拟机的局域网,不建议在/etc/hosts中配置域名
问题 2:
Cloudera 建议将 /proc/sys/vm/swappiness设置为 0。当前设置为60。使用sysctl 命令在运行时更改该设置并编辑/etc/sysctl.conf 以在重启后保存该设置。您可以继续进行安装,但可能会遇到问题,Cloudera Manager报告您的主机由于交换运行状况不佳。以下主机受到影响:
[root@hadoop01 opt]# sysctl -w vm.swappiness=0
[root@hadoop01 opt]# echo "vm.swappiness=0" >> /etc/sysctl.conf
[root@hadoop02 opt]# sysctl -w vm.swappiness=0
[root@hadoop02 opt]# echo "vm.swappiness=0" >> /etc/sysctl.conf
[root@hadoop03 opt]# sysctl -w vm.swappiness=0
[root@hadoop03 opt]# echo "vm.swappiness=0" >> /etc/sysctl.conf
修正后的结果:
根据自己需求选择安装大数据组件:
由于是虚拟机,这一步就安装cm给的默认的:
为hive 和 Activity Monitor设置数据库名、用户名和密码: (最好测试连接通过才继续)
集群设置的配置:可以选择默认
错误:
看日志是缺少mysql的jar包:
[root@hadoop01 ~]# cp /home/mysql-connector-java-5.1.6-bin.jar /opt/cloudera/parcels/CDH-5.3.6-1.cdh5.3.6.p0.11/lib/hive/lib/
[root@hadoop02 ~]# cp /home/mysql-connector-java-5.1.6-bin.jar /opt/cloudera/parcels/CDH-5.3.6-1.cdh5.3.6.p0.11/lib/hive/lib/
[root@hadoop03 ~]# cp /home/mysql-connector-java-5.1.6-bin.jar /opt/cloudera/parcels/CDH-5.3.6-1.cdh5.3.6.p0.11/lib/hive/lib/
[root@hadoop01 ~]# cp /home/mysql-connector-java-5.1.6-bin.jar /opt/cloudera/parcels/CDH-5.3.6-1.cdh5.3.6.p0.11/lib/oozie/lib/
[root@hadoop02 ~]# cp /home/mysql-connector-java-5.1.6-bin.jar /opt/cloudera/parcels/CDH-5.3.6-1.cdh5.3.6.p0.11/lib/oozie/lib/
[root@hadoop03 ~]# cp /home/mysql-connector-java-5.1.6-bin.jar /opt/cloudera/parcels/CDH-5.3.6-1.cdh5.3.6.p0.11/lib/oozie/lib/
[root@hadoop01 ~]# cp /home/mysql-connector-java-5.1.6-bin.jar /opt/cloudera/parcels/CDH-5.3.6-1.cdh5.3.6.p0.11/lib/hue/
[root@hadoop02 ~]# cp /home/mysql-connector-java-5.1.6-bin.jar /opt/cloudera/parcels/CDH-5.3.6-1.cdh5.3.6.p0.11/lib/hue/
[root@hadoop03 ~]# cp /home/mysql-connector-java-5.1.6-bin.jar /opt/cloudera/parcels/CDH-5.3.6-1.cdh5.3.6.p0.11/lib/hue/
全部服务运行通过后继续:
安装完成:
完成后回到主页面可以看到各个服务的状态: hdfs有点问题
测试:最好切换的hdfs用户或者关闭权限。我的hdfs稍微有问题,没有home目录。
测试hdfs:
bash-4.1$sudo vi /home/words
bash-4.1$hdfs dfs -put /home/words /
bash-4.1$hdfs dfs -cat /words
测试mapreduce:
bash-4.1$ls /opt/cloudera/parcels/CDH-5.3.6-1.cdh5.3.6.p0.11/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar
bash-4.1$yarn jar /opt/cloudera/parcels/CDH-5.3.6-1.cdh5.3.6.p0.11/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar wordcount /words /out/00
bash-4.1$hdfs dfs -cat /out/00/part-r-00000
测试hive:
bash-4.1$ hive
hive>create table if not exists t1(id string);
hive> load data local inpath '/home/words' into table t1;
hive> select * from t1;
OK
hello world
hi world
hadoop spark cdh nice
good good good
Time taken: 0.698 seconds, Fetched: 4 row(s)
hive> select count(id) from t1; 看看hive产生的mr是否能跑
Total jobs = 1
Launching Job 1 out of 1
Number of reduce tasks determined at compile time: 1
................
OK
4
Time taken: 35.851 seconds, Fetched: 1 row(s)
测试hbase:
bash-4.1$ hbase shell
17/12/20 23:20:45 INFO Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.98.6-cdh5.3.6, rUnknown, Tue Jul 28 15:19:46 PDT 2015
hbase(main):001:0> create 'test','cf1'
0 row(s) in 4.2150 seconds
=> Hbase::Table - test
hbase(main):006:0> put 'test','rk1','cf1:name','zs'
0 row(s) in 0.1320 seconds
hbase(main):007:0> put 'test','rk1','cf1:sex','1'
0 row(s) in 0.0160 seconds
hbase(main):008:0> put 'test','rk1','cf1:age','28'
0 row(s) in 0.0110 seconds
hbase(main):009:0> scan 'test'
ROW COLUMN+CELL
rk1 column=cf1:age, timestamp=1513783403310, value=28
rk1 column=cf1:name, timestamp=1513783385065, value=zs
rk1 column=cf1:sex, timestamp=1513783394462, value=1
1 row(s) in 0.0440 seconds
查看hdfs的web ui监控:
查看yarn的web ui监控和historyserver的监控:
Hue 的web ui监控:
第一次登陆随便输入用户名和密码,记住即可:
需要简单的配置:新手直接全部默认即可
来一个简单的对应的hive的查询:
配置:
在每一个组件的配置去查找即可。如hive配置:
用户管理: 管理--->用户--->添加用户/改密码
添加后:
退出admin登录: 注意cdh用户只能读,不能修改、配置、安装、卸载等。
再次向群集中添加服务:
可以修改集群名:
选择添加服务: 这里只能添加单个服务
然后高级配置和升级HA:
............................................待续................................................................