当前位置: 首页 > 编程日记 > 正文

Cloudera Manager 5.3 和 CDH5.3.0 本地(离线)

为什么80%的码农都做不了架构师?>>>   hot3.png

声明一下:http://my.oschina.net/dataRunner/blog/369129    是本人所写,并非抄袭。

有部分内容来自 http://www.wangyongkui.com/hadoop-cdh5/ 这个文件是根据官网操作,翻译的不错,但是有个别地方有错误

系统环境

1. 4台联想R510服务器,其中master节点4核心、8GB,其它节点双核心、4GB。

2. 网卡:100M。

3. 共有硬盘6TB。

4. 网络环境内网。

5. Centos6.5 x64(安装系统时尽量把开发包安装齐全,另master节点需要Mysql可以在安装系统时勾选)。

准备工作

1.1 卸载系统自带OPEN-JDK(所有节点)

安装好的Centos系统有时会自动安装OpenJdk,用命令java -version查看:

如有上述显示,说明系统里已经有OpenJdk,执行以下命令查看系统中有哪些OpenJdk相关包:

rpm -qa | grep java

其中有如下包必须卸载,根据系统版本不同,各个包版本号会有所差异: java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64 java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64 java-1.6.0-openjdk-devel-1.6.0.0-1.66.1.13.0.el6.x86_64 执行以下命令,卸载:

说明你如果你的系统也是centos 6.5 x64 你需要卸载jdk 如下

rpm -e --nodeps java-1.6.0-openjdk-devel-1.6.0.0-1.66.1.13.0.el6.x86_64

rpm -e --nodeps java-1.7.0-openjdk-devel-1.7.0.45-2.4.3.3.el6.x86_64

rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64

rpm -e --nodeps libvirt-java-0.4.9-1.el6.noarch

rpm -e --nodeps tzdata-java-2013g-1.el6.noarch

rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64

rpm -e --nodeps libvirt-java-devel-0.4.9-1.el6.noarch

安装JDK(所有节点,有你几台机器就按照几台)

1.2 安装jdk

(1)使用工具把jdk、hadoop复制到linux的/root/Downloads

(2)cp  /root/Downloads/*  /usr/local

(3)cd /usr/local

赋予执行权限 chmod u+x  jdk-7u71-linux-x64.tar.gz

(4) tar -zxvf jdk-7u71-linux-x64.tar.gz

(5)重命名 mv jdk1.7.0_71  jdk

(6)执行命令 vi /etc/profile 设置环境变量

增加两行 export JAVA_HOME=/usr/local/jdk

export PATH=.:$JAVA_HOME/bin:$PATH

保存退出

执行命令  source  /etc/profile

(7)验证:执行命令java -version

1.3 修改主机名

(1)执行命令hostname cdh1  修改会话中的hostname

(2)验证:执行命令hostname

(3)执行命令vi  /etc/sysconfig/network 修改文件中的 hostname=cdh1

(4)验证:执行命令reboot -h now 重启机器

1.4 设置ip与hostname绑定

其中HOSTNAME与主机名一致。主机名如果跟系统安装时不一致请执行hostname命令让其立即生效,否则会影响各节点互相访问。修改/etc/hosts文件,添加:

(1)执行命令vi  /etc/hosts

在文本最后增加一行 10.8.166.241 cdh1

10.8.166.242 cdh2

10.8.166.243 cdh3

10.8.166.244 cdh4

1.5 打通SSH(所有节点)

这里master节点和其他datanode节点会略有区别。 首先所有节点均执行如下命令,遇到提示一路回车即可:

1.6 ssh免密码登陆

(1)执行命令ssh-keygen -t rsa (然后一路Enter)  产生秘钥位于/root/.ssh/

(2)执行命令cp /root/.ssh/id_rsa.pub  /root/.ssh/authorized_keys  产生授权文件

(3)验证:ssh localhost  (ssh 主机名)

1.7克隆操作

方式一

(1)如果克隆的直接下一步;

(2)判断本系统是否密码配置成功:

ssh cdh2  (ssh 主机名)

(3)主节点把密码传到从节点

ssh-copy-id  -i  cdh2

方式二

(1)ssh登陆到从节点

ssh cdh2

(2)从节点把密码传到主节点

ssh-copy-id  -i  cdh1

这两个只需操作一个就行了

cd /root/.ssh/

然后输入密码即可,以后再到其他机器就不需要密码额。

1.8关闭防火墙(所有节点)

防火墙会引起hadoop相关组件通讯的各种异常。

1.8.1关闭防火墙

(1)执行命令service iptables stop (说明:临时关闭) 

(2)验证:执行命令service iptables status (说明:查看防火墙状态)

1.8.2关闭防火墙的自动开启

(1)执行命令chkconfig iptables off (说明:重启后生效)

(2)验证:执行命令chkconfig --list|grep iptables

1.9关闭selinux

1 .命令: vi /etc/sysconfig/selinux 或者

修改/etc/selinux/config 下的 SELINUX=disabled (重启后生效)。


2.“SELINUX=”后的信息为“disabled”

3.setenforce 0 (临时生效)

4.重启机器 指令 reboot

2.0 (非必须项)安装NTP服务(所有节点)

(备注:此操作我没有用,我命令:date查看一下系统时间,几个机器没有差别,再说也是内网,响应速度非常快)

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

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

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

所有节点安装相关组件:ntp与ntpdate。按顺序安装即可,完成后,配置开机启动:

chkconfig ntpd on

检查是否设置成功:

chkconfig --list ntpd

其中2-5为on状态就代表成功。

配置内网NTP服务器(master节点)

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

ntdate -u 65.55.56.206

ntp服务只有一个配置文件,配置好了就OK。 这里只给出有用的配置,不需要的配置都用#注掉,这里就不在给出:

driftfile /var/lib/ntp/driftrestrict 127.0.0.1restrict -6 ::1restrict default nomodify notrap server 65.55.56.206 preferincludefile /etc/ntp/crypto/pwkeys /etc/ntp/keys


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

service ntpd startchkconfig ntpd on (设置开机启动)

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

synchronised to NTP server () at stratum 2time correct to within 74 mspolling server every 128 s

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

配置ntp客户端(所有datanode节点)ok保存退出,请求服务器前,请先使用ntpdate手动同步一下时间:

ntdate -u 192.168.1.101 (内网ntp服务器)

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

service ntpd start
chkconfig ntpd on

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

2.1 Mysql配置(master节点)

只需要配置master节点的Mysql即可。(这里不再介绍如何安装Mysql) 将mysql设置为开机启动:

chkconfig mysqld on


本次安装需要创建如下数据库(不包括Cloudera Manager的数据库,Cloudera Manager数据库有相关脚本创建,后面会有说明)

--hive数据库create database hive 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


以上数据库,可能会根据安装组件的不同略有差别。 给用户授权(这里密码设为hadoop)

grant all on *.* to root@"%" Identified by "hadoop";

正式开工

安装Cloudera Manager 5(cm5)

下载地址http://archive-primary.cloudera.com/cm5/cm/5/,根据自己的系统选择相应的版本,本次安装选用的是cloudera-manager-el6-cm5.0.0_x86_64.tar.gz。下载完成后只上传到master节点即可。然后解压到/opt目录下,不能解压到其他地方,因为cdh5的源会默认在/opt/cloudera/parcel-repo寻找,怎么制作cdh5的本地源文件会在之后介绍。给所有节点添加cloudera-scm用户:

userdel --system --home=/opt/cm-5.3.0/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

修改/opt/cm-5.3.0/etc/cloudera-scm-agent/config.ini 下面的serer_host

server_host=cdh1

为Cloudera Manager 5建立数据库:

/opt/cm-5.3.0/share/cmf/schema/scm_prepare_database.sh mysql cm -h -uroot -proot --scm-host localhost scm scm scm

格式是:scm_prepare_database.sh 数据库类型  数据库 服务器 用户名 密码  –scm-host  Cloudera_Manager_Server所在的机器,后面那三个不知道代表什么,直接照抄官网的了。 因为我们用的是Mysql数据库,所以我们需要下载Mysql的JDBC驱动,本次从官网上下载最新稳定版:mysql-connector-java-5.1.30.tar.gz,解压之后找到mysql-connector-java-5.1.30-bin.jar放到/opt/cm-5.3.0/share/cmf/lib/目录下。 开启Cloudera Manager 5 Server端:

1

/opt/cm-5.3.0/etc/init.d/cloudera-scm-server start

注意server首次启动不要立即关闭或重启,因为首次启动会自动创建相关表以及数据,如果因为特殊原因中途退出,请先删除所有表以及数据之后再次启动,否则将会出现启动不成功的情况。 开启Cloudera Manager 5 Agents端。 先scp /opt/cm-5.0.0到所有datanode节点上,然后在每台机器上开启Agents端:

1

scp -r  /opt/cm-5.3.0 root@datanode1:/opt/cm-5.3.0

等待拷贝成功,在所有datanode节点上启动:(注意必须以管理员权限启动)

1

sudo /opt/cm-5.3.0/etc/init.d/cloudera-scm-agent start

浏览器启动Cloudera Manager 5 控制台(默认端口号是7180),启动成功就会看到登陆页面。

安装CDH5

先下载到本地http://archive-primary.cloudera.com/cdh5/parcels/5.3.0/,这里需要下载两样东西,首先是与自己系统版本相对应的parcel包,然后是manifest.json文件。下载完成后将这两个文件放到master节点的/opt/cloudera/parcel-repo下(目录在安装Cloudera Manager 5时已经生成),注意目录一个字都不能错,接下来打开manifest.json文件,里面是json格式的配置。

关于这个步骤我们可以更简单的操作,在官网上其实已经给出hash码,我们将其下载,并重命名为CDH-5.3.0-1.cdh5.3.0.p0.30-el6.parcel.sha

方式二(如果你想体验一下就用方式二,想简单就用方式一)

我们需要的就是与我们系统版本相对应的hash码,因为我们用的是Centos6.5,所以找到如下位置:

在这个大括号的最下面找到“hash”所对应的值。

将“hash”的值复制下来,然后创建一个文件,文件名与你的parel包名一致,并加上.sha后缀:

这样你的目录下将有这3个文件,将“hash”的值复制到新建的sha文件中,并保存,好了,我们的本地源制作完成了。这样基本大功告成了,再之后的操作就是控制台按照步骤安装即可。

打开http://192.168.1.101:7180,登陆控制台,默认账户和密码都是admin,安装时选择免费版,之后由于cm5对中文的支持很强大,按照提示安装即可,如果系统配置有什么问题在安装过程中会有提示,根据提示给系统安装组件就可以了。

如果在安装时选择了安装Hive,可能会遇到安装失败的问题,查看一下日志发现时安装Hive时需要安装JDBC驱动,所以同样我们将Mysql的驱动包拷贝到/opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.47/lib/hive/lib/目录下,之后再继续安装就不会遇到问题了。

拷贝这个目录如果还是出问题的话,就执行下面步骤

错误1

JDBC driver cannot be found. Unable to find the JDBC database jar on host :cdh1

解决方法:将mysql的jar 文件放到 /usr/share/java  (记住是host :cdh1 主机的)

再次测试链接可能还会有下面问题,我是mysql 的root 用户链接, 密码也正确

并且我在Windows平台也用mysqll链接工具也能正常链接成功。这里测试链接就是过不去,并报一下问题

错误2

Logon denied for user/password. Able to find the database server and databas

解决方法:新一个Mysql 用户 并授权你

转载于:https://my.oschina.net/yimi88/blog/369131

相关文章:

万字长文详解如何用Python玩转OpenGL | CSDN 博文精选

作者 | 天元浪子来源 | CSDN博文精选【编者按】OpenGL(开放式图形库),用于渲染 2D、3D 矢量图形的跨语言、跨平台的应用程序编程接口,C、C、Python、Java等语言都能支持 OpenGL。本文作者以 Python 语法为例,用两万字详…

模仿视频抓帧实现

路口或某些场所可能并不会把从摄像头获取到的视频全部存储下来或对所有的视频帧进行处理,即摄像设备是一直处于打开状态,可能会根据需要间隔性的抓取其中一帧,或当某事件触发时才会抓取当前的一帧数据进行处理。这里使用两个线程来模仿此场景…

iOS--MD5加密封装

#import <Foundation/Foundation.h> interface MD5 : NSObject /** * md5加密 * * param inPutText 需要加密的字符串 * * return 加密好的字符串 */ (NSString *)md5:(NSString *)inPutText; end #import "MD5.h" #import "CommonCrypto/CommonDiges…

Akka路由_RoundRobinRoutingLogic

2019独角兽企业重金招聘Python工程师标准>>> Akka路由_RoundRobinRoutingLogic 使用Round Robin算法的Router&#xff0c;代码中有注释&#xff0c;基本和上篇文章中的代码一样 http://my.oschina.net/xinxingegeya/blog/369721&#xff0c; 具体如下&#xff0c;关…

iOS ---网络请求封装(自动缓存与手动缓存)

#import <Foundation/Foundation.h> interface WNetworkCache : NSObject /** * 手动写入/更新缓存 * * param jsonResponse 要写入的数据 * param URL 请求URL * * return 是否写入成功 */ (BOOL)saveJsonResponseToCacheFile:(id)jsonResponse andURL:(NSStrin…

Windows下获取视频设备的一种改进实现

之前在https://blog.csdn.net/fengbingchun/article/details/102806822中介绍过在Windows下获取视频设备列表的方法。其实那种实现方法是有缺陷的&#xff0c;当PC机上连接多个视频设备&#xff0c;并且其中有设备处于启动运行状态时&#xff0c;再调用相关接口获取视频设备可能…

最新单步目标检测框架,引入双向网络,精度和速度均达到不错效果

作者 | Tiancai Wang等译者 | 路一直都在出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;one-stage的目标检测方法因其具有实时性强、检测精度高等特点&#xff0c;近年来受到广泛关注。目标检测包括分类和定位两个子任务&#xff0c;通常来说&#xff0c;one-stage目…

基于Sentinel的Redis3.2高可用方案

默认情况下&#xff0c;Redis node和sentinel的protected-mode都是yes&#xff0c;在搭建集群时&#xff0c;若想从远程连接redis集群&#xff0c;需要将redis.conf和sentinel.conf的protected-mode修改为no&#xff0c;若只修改redis node&#xff0c;从远程连接sentinel后&am…

从YARN迁移到k8s,滴滴机器学习平台二次开发是这样做的

整理 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;【导读】人工智能时代&#xff0c;机器学习已经渗透进每个领域&#xff0c;改变了这些领域的业务模式、技术架构以及方法论。随着深度学习技术近年来快速发展&#xff0c;高效、易用的机器学习平台对于互联…

最新 macOS Sierra 10.12.3 安装CocoaPods及使用详解

cocoapods官网&#xff1a;https://guides.cocoapods.org 一、什么是CocoaPods 每种语言发展到一个阶段&#xff0c;就会出现相应的依赖管理工具&#xff0c;例如 Java 语言的 Maven&#xff0c;nodejs 的 npm。随着 iOS 开发者的增多&#xff0c;业界也出现了为 iOS 程序提供…

libusb中的热插拔使用举例

以下为判断usb设备是插入还是拔出状态(热插拔)的测试代码&#xff1a; 在Windows下是不支持的&#xff0c;在Linux是支持的&#xff0c;下一个版本可能会支持Windows下的热插拔&#xff1a; #include <chrono> #include <thread> #include <iostream> #incl…

C++复制控制:拷贝构造函数

一、拷贝构造函数是一种特殊构造函数&#xff0c;具有单个形参&#xff0c;该形参&#xff08;常用const修饰&#xff09;是对该类类型的引用。与默认构造函数一样 &#xff0c;拷贝构造函数可由编译器隐式调用。拷贝构造函数应用的场合为&#xff1a; &#xff08;1&#xff0…

关于IOS获取本地通讯录信息(包含iOS9.0前后)

在ios开发当中&#xff0c;获取用户本地的通讯录功能愈加频繁的出现&#xff0c;七两自己也在自己公司的项目当中遇到的获取本地的通讯录信息的功能&#xff08;俗称“种子用户功能”&#xff0c;太可怕了&#xff09;。对此七两总结了自己使用本地通讯录时的注意点&#xff0c…

C和C++安全编码笔记:动态内存管理

4.1 C内存管理&#xff1a; C标准内存管理函数&#xff1a; (1).malloc(size_t size)&#xff1a;分配size个字节&#xff0c;并返回一个指向分配的内存的指针。分配的内存未被初始化为一个已知值。 (2).aligned_alloc(size_t alignment, size_t size)&#xff1a;为一个对象…

作为一名程序员,数学到底对你有多重要?

最近在知乎上看到一个贴子&#xff0c;看完后我沉默了.....沉思后想想&#xff0c;其实每个行业都会分等级&#xff0c;程序员也不例外&#xff01;说好听一点的叫工程师&#xff0c;普通一点的叫程序员&#xff0c;差一点的叫码农&#xff0c;更差的还会叫码畜&#xff0c;码奴…

经典SQL(sqlServer)

一、基础 1、说明&#xff1a;创建数据库CREATE DATABASE database-name 2、说明&#xff1a;删除数据库drop database dbname3、说明&#xff1a;备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice disk, testBack, c:\mssql7backup\MyNwind_1.dat--- …

iOS UITextField输入框随键盘弹出界面上移

//点击输入框界面跟随键盘上移 - (void)textFieldDidBeginEditing:(UITextField *)textField { CGRect frame textField.frame; int offSet frame.origin.y 70 - (self.view.frame.size.height - 216.0); //iphone键盘高度为216.iped键盘高度为352 [UIView beginAnimations:…

IEEE分享 | 机器学习在领英的规模化应用

人工智能和机器学习仍然是全球持续增长的领域之一&#xff0c;近年来涌现出越来越多本科生或者非人工智能专业出身的工程师&#xff0c;他们努力学习和使用技术来改进产品&#xff0c;几乎每天都有新的机器学习技术和框架发布。这篇文章将讨论领英如何规模化利用技术&#xff0…

GitHub/GitLab/Gitee中项目互拷贝后仍保留历史提交记录的方法

GitHub、GitLab、Gitee等在同一个网站中执行复制或拷贝一个已有项目到一个新项目比较简单&#xff0c;因为它们在每一个项目上都有一个Fork按钮&#xff0c;直接点击此Fork按钮即可&#xff0c;Fork后的新项目会保留原有项目的历史提交记录。但是如果不在同一个网站上进行此操作…

基于mimeTex的数学公式Webservice的部署和实现

通过Latex语法&#xff0c;实现生成数学公式的解决方案也很多。这里介绍一种方法&#xff0c;使用开源的mimeTex。该项目的官网地址如下&#xff1a;http://www.forkosh.com/mimetex.html网站主页有一个声明。如果你的服务器上已经安装了latex&#xff0c;那么推荐使用mathTex&…

对称加密算法AES之GCM模式简介及在OpenSSL中使用举例

AES(Advanced Encryption Standard)即高级加密标准&#xff0c;由美国国家标准和技术协会(NIST)于2000年公布&#xff0c;它是一种对称加密算法。关于AES的更多介绍可以参考&#xff1a;https://blog.csdn.net/fengbingchun/article/details/100139524 AES的GCM(Galois/Counte…

iOS UITextField清空按钮

extField.clearButtonModeUITextFieldViewModeWhileEditing; 就可以了&#xff0c;表明编辑输入框的时候启动一键清空按钮。另外&#xff0c;clearButtonMode还有三个属性&#xff1a; UITextFieldViewModeNever, 清空按钮永不出现 UITextFieldViewModeUnlessEditing, 不编…

腾讯“疯狂”开源

作者 | 马超责编 | 胡巍巍出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;近日&#xff0c;腾讯自研的万亿级分布式消息中间件TubeMQ正式开源&#xff0c;并捐赠给Apache基金会&#xff0c;成为基金会官方认可的Incubator项目。我们知道与TubeMQ功能类似的kafka是领…

[Android]开发摇一摇分歧表决器过程

心血来潮&#xff0c;走进Android&#xff0c;准备开发一个摇一摇分歧表决器&#xff08;PS&#xff1a;这个想法源自去年看的一个都市剧《约会专家》中主人公杭杭开发的分歧表决器APP&#xff09;。简述&#xff1a;摇一摇分歧表决器是一款Android App&#xff0c;通过将传统的…

C和C++安全编码笔记:整数安全

5.1 整数安全导论&#xff1a;整数由包括0的自然数(0, 1, 2, 3, …)和非零自然数的负数(-1, -2, -3, …)构成。 5.2 整数数据类型&#xff1a;整数类型提供了整数数学集合的一个有限子集的模型。一个具有整数类型的对象的值是附着在这个对象上的数学值。一个具有整数类型的对象…

8.3折特惠票仅剩3天!「2019 嵌入式智能国际大会」全日程大公开!

8.3折特惠票仅剩3天立即抢购&#xff1a;https://t.csdnimg.cn/otBk还有5天&#xff0c;大伙期待的「2019嵌入式智能国际大会」正式开幕了&#xff01;2019年12月6日-7日&#xff0c;我们在深圳市人才研修院见&#xff01;大会以“万物互联泛在智能”为主题&#xff0c;邀请30位…

iOS点击空白收回键盘

//点击空白收回键盘 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { [self.view endEditing:YES]; }

第一个net-mvc程序

结构 视图层 <% Page Language"C#" Inherits"System.Web.Mvc.ViewPage<dynamic>" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">…

iOS 储存用户信息设置封装 直接调用即可(部分是代码片段)

、、、、、、、、、、、、、、、、、、首先 定义 UserInfo #import <Foundation/Foundation.h> interface UserInfo : NSObject //用户id property (nonatomic, strong) NSString *userID; //用户名 property (nonatomic, strong) NSString *userName; //密码 propert…

ASN.1简介及OpenSSL中ASN.1接口使用举例

ASN.1(Abstract Syntax Notation One)是一套标准&#xff0c;是描述数据的表示、编码传输、解码的灵活的记法。它提供了一套正式、无歧义和精确的规则以描述独立于特定计算机硬件的对象结构。OpenSSL的编码方法就是基于该标准。ASN.1是一种结构化的数字对象描述语言&#xff0c…