目录

目录

1、CDH介绍

1.1、什么是CDH和CM?

  CDH一个对Apache Hadoop的集成环境的封装,可以使用Cloudera Manager进行自动化安装。

  Cloudera-Managerceql(本文中简称CM)是一个工具,CM能够管理一个大的Hadoop cluster并不是一只要下载tar files什么压缩并启动services这么简单。后续有非常多设定、监控等麻烦的事要处理,CM都能够做到,有些类似Casti。Cloudera Manager整合了一列的功能让系统管理者能更方便的维护Hadoop。

  

1.2、CDH的主要功能?

  • 管理
  • 监控
  • 诊断
  • 集成

1.3、CDH版本衍化

  Hadoop是一个开源项目,所以很多公司在这个基础进行商业化,Cloudera对hadoop做了相应的改变。

  Cloudera公司的发行版,我们将该版本称为CDH(Cloudera Distribution Hadoop)。截至目前为止,CDH共有5个版本,其中,前两个已经不再更新,最近的两个,分别是CDH4在Apache Hadoop 2.0.0版本基础上演化而来的),CDH5,它们每隔一段时间便会更新一次。

  Cloudera以Patch Level划分小版本,比如Patch Level为923.142表示在原生态Apache Hadoop 0.20.2基础上添加了1065个Patch(这些Patch是各个公司或者个人贡献的,在Hadoop jira上均有记录),其中923个是最后一个Beta版本添加的Patch,而142个是稳定版发行后新添加的Patch。由此可见,Patch Level越高,功能越完备且解决的Bug越多。

  Cloudera版本层次更加清晰,且它提供了适用于各种操作系统的Hadoop安装包,可直接使用apt-get或者yum命令进行安装,更加省事。

  在CDH5以上的版本中,已经加入了Hadoop2.0的HA单点故障解决方案。可以参考《ubuntu12.04+hadoop2.2.0+zookeeper3.4.5+hbase0.96.2+hive0.13.1分布式环境部署》中的单点故障测试。

  

1.4、CDH5.1.2支持的主要组件简要介绍

  • HTTPFS

      1:Httpfs是Cloudera公司提供的一个Hadoop Hdfs的一个Http接口,通过WebHDFS REST API 可以对hdfs进行读写等访问

      2:与WebHDFS的区别是不需要客户端可以访问Hadoop集群的每一个节点,通过Httpfs可以访问放置在防火墙后面的Hadoop集群

      3:Httpfs是一个Web应用,部署在内嵌的Tomcat中

  • HBASE

      Hbase是Bigtable的开源山寨版本。是建立的Hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。

      它介于Bosql和RDBMS之间,仅能通过主键(row key)和主键的Range来检索数据,仅支持单行事务(可通过Hive支持来实现多表Join等复杂操作)。主要用来存储非结构化和半结构化的松散数据。

      与Hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。

  • HDFS

      Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。

  • HIVE

      Hive 是一个基于 Hadoop 的开源数据仓库工具,用于存储和处理海量结构化数据。它把海量数据存储于 Hadoop 文件系统,而不是数据库,但提供了一套类数据库的数据存储和处理机制,并采用 HQL (类 SQL )语言对这些数据进行自动化管理和处理。我们可以把 Hive 中海量结构化数据看成一个个的表,而实际上这些数据是分布式存储在 HDFS 中的。 Hive 经过对语句进行解析和转换,最终生成一系列基于 hadoop 的 Map/Reduce 任务,通过执行这些任务完成数据处理。

  • HUE

      Hue是CDH专门的一套WEB管理器,它包括3个部分Hue Ui,Hue Server,Hue db。Hue提供所有的CDH组件的Shell界面的接口。你可以在Hue编写MR,查看修改HDFS的文件,管理Hive的元数据,运行Sqoop,编写Oozie工作流等大量工作。

  • Impala

      Impala对你存储在Apache Hadoop在HDFS,HBase的数据提供直接查询互动的SQL。除了像Hive使用相同的统一存储平台,Impala也使用相同的元数据,SQL语法(Hive SQL),ODBC驱动程序和用户界面(Hue Beeswax)。Impala还提供了一个熟悉的面向批量或实时查询和统一平台。

  • MapReduce

      MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",和他们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。他极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。MapReduce更多运行于离线系统,而实时计算,可以使用Storm。关于Sotrm的使用和介绍,可以参考这篇文章《ubuntu12.04+storm0.9.2分布式集群的搭建》。

  • Oozie

      Oozie是Yahoo针对Apache Hadoop开发的一个开源工作流引擎。用于管理和协调运行在Hadoop平台上(包括:HDFS、Pig和MapReduce)的Jobs。Oozie是专为雅虎的全球大规模复杂工作流程和数据管道而设计。

  • Solr

      Solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。Solr 包装并扩展了 Lucene,所以Solr的基本上沿用了Lucene的相关术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对 Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用 Solr 创建的索引。

  • Spark

      Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。

      Spark和Storm类似,都是基于内存的运行,不确定哪种方式在数据吞吐量上要具优势,不过Storm计算时间延迟要小。关于Sotrm的使用和介绍,可以参考这篇文章《ubuntu12.04+storm0.9.2分布式集群的搭建》。

  • Sqoop

      Sqoop中一大亮点就是可以通过hadoop的mapreduce把数据从关系型数据库中导入数据到HDFS。sqoop架构非常简单,其整合了Hive、Hbase和Oozie,通过map-reduce任务来传输数据,从而提供并发特性和容错。sqoop主要通过JDBC和关系数据库进行交互。理论上支持JDBC的database都可以使用sqoop和hdfs进行数据交互。

      

  • YARN

      YARN可以理解为是Hadoop MapReduceV2版本,YARN重构根本的思想是将 JobTracker 两个主要的功能分离成单独的组件,这两个功能是资源管理和任务调度 / 监控。新的资源管理器全局管理所有应用程序计算资源的分配,每一个应用的 ApplicationMaster 负责相应的调度和协调。一个应用程序无非是一个单独的传统的 MapReduce 任务或者是一个 DAG( 有向无环图 ) 任务。ResourceManager 和每一台机器的节点管理服务器能够管理用户在那台机器上的进程并能对计算进行组织。

      事实上,每一个应用的 ApplicationMaster 是一个详细的框架库,它结合从 ResourceManager 获得的资源和 NodeManager 协同工作来运行和监控任务。

  • Zookeeper

      Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

      Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是 Zookeeper 并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。

2、CDH的官网在哪里?

  http://www.cloudera.com/

3、CDH在哪里下载?

  由于CDH有多个版本,作者不建议单独下载安装,可以通过cloudera-manager-daemons、cloudera-manager-server、cloudera-manager-agent来安装,本文后面会有介绍。

4、如何安装

4.1、设置Host

  修改Host

  1. root@m1:~# cat /etc/hosts
  2. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
  3. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
  4. 192.168.1.10 m1.idoall.org m1
  5. 192.168.1.11 m2.idoall.org m2
  6. 192.168.1.12 s1.idoall.org s1
  7. 192.168.1.13 s2.idoall.org s2
  8. # The following lines are desirable for IPv6 capable hosts
  9. ff02::1 ip6-allnodes
  10. ff02::2 ip6-allrouters

4.2、设置静态IP

  修改成静态IP地址

  1. root@m1:~# vi /etc/network/interfaces
  2. iface wlan0 inet static
  3. address 192.168.1.10
  4. netmask 255.255.255.0
  5. gateway 192.168.1.1
  6. dns-nameservers 192.168.1.1
  7. dns-nameservers 8.8.8.8

4.3、设置Host

  修改主机名称

  1. root@m1:~# cat /etc/hostname
  2. m1.idoall.org

4.4、关闭防火墙

  1. root@m1:~# ufw disable

4.5、安装JDK7,CDH5要求至少是Oracle JDK7

  添加 PPA repository 到系统

  1. root@m1:~# add-apt-repository ppa:webupd8team/java
  2. root@m1:~# apt-get update
  3. root@m1:~# sudo apt-get upgrade

  过程中会弹出个框,选择YES,因为要下载二进制包,所以可能会慢一些

  1. root@m1:~# apt-get install oracle-java7-installer

  

  将Oracle 7 设置成默认版本

  1. root@m1:~# apt-get install oracle-java7-set-default

  

  查看当前Java版本

  1. root@m1:~# java -version
  2. java version "1.7.0_67"
  3. Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
  4. Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)

4.6、安装MySql最新版,CM的数据库我们用My Sql管理

  安装Mysql Server,后面在安装Cloudera Manager的时候会用到,如果你要使用PostGreSQL ,可以跳过这一步 (4.6-4.8)。

  

4.6.1、在主机上使用apt-get安装My Sql

  在主机上使用apt-get安装My Sql,安装过程中会有提示,一直接回车就可以 (4台机器都要执行)

  1. root@m1:~# apt-get install mysql-server

4.6.2、修改MySql配置,方便CM使用

4.6.2.1、配置MySql的监听地址

  对Mysql的配置项进行修改,先备份,找到“bind-address = 127.0.0.1”这一行,然后注释掉,改成“bind-address = 0.0.0.0”

  1. root@m1:~# cp /etc/mysql/my.cnf /etc/mysql/my.cnf.bak
  2. root@m1:~# vi /etc/mysql/my.cnf
  3. #bind-address = 127.0.0.1
  4. bind-address = 0.0.0.0

4.6.2.2、配置MySql的其他配置,为了CM使用

  MySql配置中,其中对于Cloudera的支持,可以参考官方描述

  1. [client]
  2. default-character-set=utf8
  3. [mysqld]
  4. transaction-isolation=READ-COMMITTED
  5. # Disabling symbolic-links is recommended to prevent assorted security risks;
  6. # to do so, uncomment this line:
  7. # symbolic-links=0
  8. character-set-server=utf8
  9. key_buffer = 16M
  10. key_buffer_size = 32M
  11. max_allowed_packet = 32M
  12. thread_stack = 256K
  13. thread_cache_size = 64
  14. query_cache_limit = 8M
  15. query_cache_size = 64M
  16. query_cache_type = 1
  17. max_connections = 550
  18. # log-bin should be on a disk with enough free space
  19. # NOTE: replace '/x/home/mysql/logs/binary' below with
  20. # an appropriate path for your system.
  21. log-bin=/x/home/mysql/logs/binary/mysql_binary_log
  22. # For MySQL version 5.1.8 or later. Comment out binlog_format for older versions.
  23. binlog_format = mixed
  24. read_buffer_size = 2M
  25. read_rnd_buffer_size = 16M
  26. sort_buffer_size = 8M
  27. join_buffer_size = 8M
  28. # InnoDB settings
  29. innodb_file_per_table = 1
  30. innodb_flush_log_at_trx_commit = 2
  31. innodb_log_buffer_size = 64M
  32. innodb_buffer_pool_size = 4G
  33. innodb_thread_concurrency = 8
  34. innodb_flush_method = O_DIRECT
  35. innodb_log_file_size = 512M
  36. [mysqld_safe]
  37. log-error=/var/log/mysqld.log
  38. pid-file=/var/run/mysqld/mysqld.pid

4.7、创建后面在CM中会使用的数据库

  1. root@m1:~# mysql -u root -p
  2. Enter password:
  3. Welcome to the MySQL monitor. Commands end with ; or \g.
  4. Your MySQL connection id is 42
  5. Server version: 5.5.38-0ubuntu0.14.04.1 (Ubuntu)
  6. Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
  7. Oracle is a registered trademark of Oracle Corporation and/or its
  8. affiliates. Other names may be trademarks of their respective
  9. owners.
  10. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  11. ## Cloudera manager db user, database and grant
  12. mysql> create user 'cmf'@'%' identified by 'xyz';
  13. Query OK, 0 rows affected (0.00 sec)
  14. mysql> create database cmf DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
  15. Query OK, 1 row affected (0.00 sec)
  16. mysql> grant all privileges on cmf.* to 'cmf'@'%' identified by 'xyz';
  17. Query OK, 0 rows affected (0.00 sec)
  18. ## For activity monitor
  19. mysql> create user 'amon'@'%' identified by 'xyz';
  20. Query OK, 0 rows affected (0.00 sec)
  21. mysql> create database amon DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
  22. Query OK, 1 row affected (0.00 sec)
  23. mysql> grant all privileges on amon.* to 'amon'@'%' identified by 'xyz';
  24. Query OK, 0 rows affected (0.00 sec)
  25. ## Hive Meta store
  26. mysql> create user 'hive'@'%' identified by 'xyz';
  27. Query OK, 0 rows affected (0.00 sec)
  28. mysql> create database metastore DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
  29. Query OK, 1 row affected (0.00 sec)
  30. mysql> grant all privileges on metastore.* to 'hive'@'%' identified by 'xyz';
  31. Query OK, 0 rows affected (0.00 sec)
  32. ## Flush all changes
  33. mysql> FLUSH PRIVILEGES;
  34. Query OK, 0 rows affected (0.00 sec)

4.8、重启MySql,查看3306端口,并安装MySql对Java的支持

  1. root@m1:~# service mysql restart
  2. root@m1:~# netstat -tulpn | grep :3306
  3. tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2207/mysqld
  4. root@m1:~# apt-get install libmysql-java
  5. Reading package lists... Done
  6. Building dependency tree
  7. Reading state information... Done
  8. Suggested packages:
  9. liblog4j1.2-java libcommons-logging-java
  10. The following NEW packages will be installed:
  11. libmysql-java
  12. 0 upgraded, 1 newly installed, 0 to remove and 4 not upgraded.
  13. Need to get 894 kB of archives.
  14. After this operation, 1,060 kB of additional disk space will be used.
  15. Get:1 http://mirrors.sohu.com/ubuntu/ trusty/universe libmysql-java all 5.1.28-1 [894 kB]
  16. Fetched 894 kB in 1s (718 kB/s)
  17. Selecting previously unselected package libmysql-java.
  18. (Reading database ... 96338 files and directories currently installed.)
  19. Preparing to unpack .../libmysql-java_5.1.28-1_all.deb ...
  20. Unpacking libmysql-java (5.1.28-1) ...
  21. Setting up libmysql-java (5.1.28-1) ...
  22. root@m1:~#

4.9、安装Cloudera Manager组件

4.9.1、将Ubuntu 14.04暂时伪造成Ubuntu12.04

  Ubuntu 14.04暂时伪造成Ubuntu12.04,因为在写本文时CM现在还不支持14.04这个版本,CDH以后的版本应该会支持吧(4台机器都要执行)

  备份文件:

  1. root@m1:~# cp /etc/lsb-release /etc/lsb-release.bak

  使用VI编译文件,暂时修改成Ubuntu12.04 LTS的信息:

  1. root@m1:~# vi /etc/lsb-release
  2. DISTRIB_ID=Ubuntu
  3. DISTRIB_RELEASE=12.04
  4. DISTRIB_CODENAME=precise
  5. DISTRIB_DESCRIPTION="Ubuntu 12.04.3 LTS"

4.9.2、升级Ubuntu的utils包,CM所必需要

  在所有机器上安装debian的包,升级utils,执行以下命令:(4台机器都要执行)

  1. root@m1:~# wget http://ftp.cn.debian.org/debian/pool/main/f/fuse/fuse-utils_2.9.0-2+deb7u1_all.deb
  2. root@m1:~# dpkg -i fuse-utils_2.9.0-2+deb7u1_all.deb

  

4.9.3、将CDH5的软件源添加到Apt中

  1. root@m1:~# curl "http://archive.cloudera.com/cm5/ubuntu/precise/amd64/cm/cloudera.list" -o /etc/apt/sources.list.d/cloudera_precise.list
  2. root@m1:~# curl -s http://archive.cloudera.com/cdh5/ubuntu/precise/amd64/cdh/archive.key | sudo apt-key add -
  3. root@m1:~# apt-get update

4.9.4、安装Cloudera Manager

  安装Cloudera Manager(4台机器都要执行)

  1. root@m1:~# apt-get install cloudera-manager-daemons cloudera-manager-server

4.9.5、修改Cloudera-Manager-Server的配置文件db.properties,设置MySql连接

  修改Cloudera-Manager-Server的配置文件db.properties,设置刚才我们在(4.7)Mysql中创建的cmf数据库、用户名、密码(4台机器都要执行)

  1. root@m1:~# vi /etc/cloudera-scm-server/db.properties
  2. com.cloudera.cmf.db.type=mysql
  3. com.cloudera.cmf.db.host=m1.idoall.org
  4. com.cloudera.cmf.db.name=cmf
  5. com.cloudera.cmf.db.user=cmf
  6. com.cloudera.cmf.db.password=xyz

4.9.6、安装ntp ,CM agents需要用到"ntpdc"

  安装ntp ,CM agents需要用到"ntpdc"(4台机器都要执行)

  1. root@m1:~# apt-get install ntp
  2. Reading package lists... Done
  3. Building dependency tree
  4. Reading state information... Done
  5. The following extra packages will be installed:
  6. libopts25
  7. Suggested packages:
  8. ntp-doc
  9. The following NEW packages will be installed:
  10. libopts25 ntp
  11. 0 upgraded, 2 newly installed, 0 to remove and 4 not upgraded.
  12. Need to get 666 kB of archives.
  13. After this operation, 1,668 kB of additional disk space will be used.
  14. Do you want to continue? [Y/n] y
  15. Get:1 http://mirrors.sohu.com/ubuntu/ trusty/main libopts25 amd64 1:5.18-2ubuntu2 [55.3 kB]
  16. Get:2 http://mirrors.sohu.com/ubuntu/ trusty/main ntp amd64 1:4.2.6.p5+dfsg-3ubuntu2 [611 kB]
  17. Fetched 666 kB in 1s (537 kB/s)
  18. Selecting previously unselected package libopts25:amd64.
  19. (Reading database ... 95843 files and directories currently installed.)
  20. Preparing to unpack .../libopts25_1%3a5.18-2ubuntu2_amd64.deb ...
  21. Unpacking libopts25:amd64 (1:5.18-2ubuntu2) ...
  22. Selecting previously unselected package ntp.
  23. Preparing to unpack .../ntp_1%3a4.2.6.p5+dfsg-3ubuntu2_amd64.deb ...
  24. Unpacking ntp (1:4.2.6.p5+dfsg-3ubuntu2) ...
  25. Processing triggers for man-db (2.6.7.1-1) ...
  26. Processing triggers for ureadahead (0.100.0-16) ...
  27. Setting up libopts25:amd64 (1:5.18-2ubuntu2) ...
  28. Setting up ntp (1:4.2.6.p5+dfsg-3ubuntu2) ...
  29. * Starting NTP server ntpd [ OK ]
  30. Processing triggers for libc-bin (2.19-0ubuntu6.1) ...
  31. Processing triggers for ureadahead (0.100.0-16) ...
  32. root@m1:~#

  

4.9.7、重启Cloudera Manager Server

  启动Cloudera manager (4台机器都要执行)

  1. root@m1:~# service cloudera-scm-server start
  2. Starting cloudera-scm-server: * cloudera-scm-server started
  3. root@m1:~#

  查看Cloudera manager的启动日志,如果能够看到下面的类似信息,说明启动正确,tailf -100 /var/log/cloudera-scm-server/cloudera-scm-server.log或者/var/log/cloudera-scm-server/cloudera-scm-server.out,如果看不到类似下面的信息,那么也可以看到哪里出了问题,大多数都是和数据库的配置有关系。

  1. 2014-08-26 23:07:52,643 INFO [JvmPauseMonitor:debug.JvmPauseMonitor@236] Detected pause in JVM or host machine (e.g. a stop the world GC, or JVM not scheduled): paused approximately 1182ms: GC pool 'Copy' had collection(s): count=1 time=1641ms
  2. 2014-08-26 23:07:52,644 INFO [JvmPauseMonitor:debug.JvmPauseMonitor@236] Detected pause in JVM or host machine (e.g. a stop the world GC, or JVM not scheduled): paused approximately 1634ms: GC pool 'Copy' had collection(s): count=1 time=1641ms
  3. 2014-08-26 23:07:52,696 INFO [WebServerImpl:servlet.DispatcherServlet@339] FrameworkServlet 'Spring MVC Dispatcher Servlet': initialization completed in 18068 ms
  4. 2014-08-26 23:07:52,793 INFO [WebServerImpl:cmon.JobDetailGatekeeper@127] ActivityMonitor configured to allow job details for all jobs.
  5. 2014-08-26 23:07:53,407 INFO [SearchRepositoryManager-0:components.SearchRepositoryManager@399] Initializing SearchTemplateManager:2014-08-27T06:07:53.407Z
  6. 2014-08-26 23:07:53,730 INFO [SearchRepositoryManager-0:components.SearchRepositoryManager@403] Generating entities:2014-08-27T06:07:53.730Z
  7. 2014-08-26 23:07:53,821 INFO [SearchRepositoryManager-0:components.SearchRepositoryManager@407] Num entities:112
  8. 2014-08-26 23:07:53,822 INFO [SearchRepositoryManager-0:components.SearchRepositoryManager@409] Generating documents:2014-08-27T06:07:53.822Z
  9. 2014-08-26 23:07:53,891 INFO [SearchRepositoryManager-0:components.SearchRepositoryManager@411] Num docs:124
  10. 2014-08-26 23:07:53,892 INFO [SearchRepositoryManager-0:components.SearchRepositoryManager@352] Constructing repo:2014-08-27T06:07:53.892Z
  11. 2014-08-26 23:07:53,979 INFO [WebServerImpl:mortbay.log@67] jetty-6.1.26.cloudera.2
  12. 2014-08-26 23:07:54,008 INFO [WebServerImpl:mortbay.log@67] Started SelectChannelConnector@0.0.0.0:7180
  13. 2014-08-26 23:07:54,009 INFO [WebServerImpl:cmf.WebServerImpl@292] Started Jetty server.
  14. 2014-08-26 23:07:55,276 INFO [SearchRepositoryManager-0:components.SearchRepositoryManager@354] Finished constructing repo:2014-08-27T06:07:55.276Z

4.10、通过Web方式继续安装

4.10.1、创建update-alternatives工具在/usr/sbin/下创建软链

  创建update-alternatives工具在/usr/sbin/下创建软链(在4台机器上一起执行)(4台机器都要执行)

  1. root@m1:~# sudo ln -s /usr/bin/update-alternatives /usr/sbin/update-alternatives

4.10.2、打开浏览器,输入 http://m1.idoall.org:7180/ 开始安装

  使用浏览器打开能够看到登录页面,那么恭喜你成功了。 http://m1.idoall.org:7180/(帐号和密码都是admin)

  

  

4.10.3、选择安装的CDH版本

  我们来安装Cloudera Express,之前官方有说这个版本有50个节点的限制,在CDH5.1.0版本也有看到,在写本文记录时的5.1.2版本不知道为什么我在安装的时候并未看到。

  

4.10.4、为CDH集群添加主机

  选择指定的CDH集群,可以添加多台机器,也可以使用IP匹配,输入完机器名称后,点search按钮,我输入的内容为"m1.idoall.org"

  

  CDH会根据你给出的内容,搜索到机器

  

4.10.5、选择CDH的安装方式

  选择存储方式,我们使用Parcel方式安装。系统会自动下载Parcel

  

  

  是否需要加密,如果你不考虑这些,可以不用选择这个复选框

  

  

  提供SSH登录凭据,这里建议使用root帐号,避免一些新同学,对其他帐号的权限设置不完整,导致后面安装出现错误。如何设置4台机器之前SSH免密码登录,就不在这里介绍了,如果不会,可以去搜索下。在这之前4台机器请配置好SSH免密码登录。

  

  

  安装过程中的状态,会下载CDH使用的包,可能会慢一些,要有耐心~~~~

  

  

  如果在安装过程中出现了以下错误“ImportError: No module named _io”,或者如下图中的提示,不用担心,这是一个已知问题。这是因为CDH5使用的Python版本问题。执行完下面的脚本后,点击重试就可以顺利的完成安装了。如果出现打不开CM Agent的log日志提示,那很可能是你的Host配置有问题,请参考本文最初写的Host配置。

  1. root@m1:~# mv /usr/lib/cmf/agent/build/env/bin/python /usr/lib/cmf/agent/build/env/bin/python.bak
  2. root@m1:~# cp /usr/bin/python2.7 /usr/lib/cmf/agent/build/env/bin/python

  

  

  安装完成了

  

4.10.6、离线方式安装CDH的Parcel

  继续安装选定 Parcel

  如果你想要提高速度,可以按以下方法离线安装

    (1)、使用迅雷到http://archive.cloudera.com/cdh5/parcels/5.1.2/目录,下载CDH-5.1.2-1.cdh5.1.2.p0.3-precise.parcel和mainfest.json文件

    (2)、上传到/opt/cloudera/parcel-repo目录中,同时创建一个CDH-5.1.2-1.cdh5.1.2.p0.3-precise.parcel.sha文件,内容为"a492e4b6dece2850f0a37f2bf613ecb2980dfd37",这个值可以在下载目录中的manifest.json文件中找到。然后看相对应的json->parcelName同一级的hash值。

    (3)、下载http://archive.cloudera.com/accumulo-c5/parcels/1.6.0.51/ACCUMULO-1.6.0-1.cdh5.1.0.p0.51-precise.parcel、http://archive.cloudera.com/sqoop-connectors/parcels/1.2/SQOOP_NETEZZA_CONNECTOR-1.2c5-precise.parcel、http://archive.cloudera.com/sqoop-connectors/parcels/1.2/SQOOP_TERADATA_CONNECTOR-1.2c5-precise.parcel

    (4)、参考步骤2,创建相应的.sha文件,.sha文件中的内容如下:

  1. root@m1:/opt/cloudera/parcel-repo# echo "a719f373833a63108c616afb034d97c4e11405d5" >> ACCUMULO-1.6.0-1.cdh5.1.0.p0.51-precise.parcel.sha
  2. root@m1:/opt/cloudera/parcel-repo# echo "a492e4b6dece2850f0a37f2bf613ecb2980dfd37" >> CDH-5.1.2-1.cdh5.1.2.p0.3-precise.parcel.sha
  3. root@m1:/opt/cloudera/parcel-repo# echo "48bedfff38f742d32541854e24b3310992616027" >> SQOOP_NETEZZA_CONNECTOR-1.2c5-precise.parcel.sha
  4. root@m1:/opt/cloudera/parcel-repo# echo "76566b4797bd061d01cf25b36b21b26927ada9a4" >> SQOOP_TERADATA_CONNECTOR-1.2c5-precise.parcel.sha

    (5)、设置文件的使用权限

  1. root@m1:/opt/cloudera/parcel-repo# chmod 777 -R .
  2. root@m1:/opt/cloudera/parcel-repo# chown cloudera-scm:cloudera-scm ./*

    (6)、查看下载后的文件列表

  1. root@m1:/opt/cloudera/parcel-repo# ll
  2. total 1709280
  3. drwxrwxrwx 2 cloudera-scm cloudera-scm 4096 Sep 1 01:16 ./
  4. drwxr-xr-x 6 root root 4096 Sep 1 01:51 ../
  5. -rwxrwxrwx 1 cloudera-scm cloudera-scm 13204338 Aug 31 21:37 ACCUMULO-1.6.0-1.cdh5.1.0.p0.51-precise.parcel*
  6. -rwxrwxrwx 1 cloudera-scm cloudera-scm 41 Sep 1 01:15 ACCUMULO-1.6.0-1.cdh5.1.0.p0.51-precise.parcel.sha*
  7. -rwxrwxrwx 1 cloudera-scm cloudera-scm 1727519860 Sep 1 00:27 CDH-5.1.2-1.cdh5.1.2.p0.3-precise.parcel*
  8. -rwxrwxrwx 1 cloudera-scm cloudera-scm 41 Sep 1 01:15 CDH-5.1.2-1.cdh5.1.2.p0.3-precise.parcel.sha*
  9. -rwxrwxrwx 1 cloudera-scm cloudera-scm 41602 Sep 1 01:13 SQOOP_NETEZZA_CONNECTOR-1.2c5-precise.parcel*
  10. -rwxrwxrwx 1 cloudera-scm cloudera-scm 41 Sep 1 01:16 SQOOP_NETEZZA_CONNECTOR-1.2c5-precise.parcel.sha*
  11. -rwxrwxrwx 1 cloudera-scm cloudera-scm 9499051 Sep 1 01:13 SQOOP_TERADATA_CONNECTOR-1.2c5-precise.parcel*
  12. -rwxrwxrwx 1 cloudera-scm cloudera-scm 41 Sep 1 01:16 SQOOP_TERADATA_CONNECTOR-1.2c5-precise.parcel.sha*

    

   

  主机正确性检查,和当前m1.idoall.org的CDH5.12组件版本汇总。

  

    

    

    

4.10.7、在m1.idoall.org上安装ZooKeeper服务

  选择要安装的集群服务,我们来安装ZooKeeper。如下图选择

  

  

  自定义角色分配

  

  

  数据库设置,我们输入之前在MySql中(4.7)创建的Activity Monitor使用的数据库amon以及用户名、密码,点击测试链接,可以看到成功信息。

  

  

  审核更改,如果你没有邮件要配置,可以什么都不用输入

  

  

  

  升级完成,并且成功启动ZooKeeper、CM Service服务。

  

  

4.10.8、初始化完成,进入CM主页

  升级完成,就可以进入主页

  

  

  查看m1.idoall.org的运行状态

  

4.10.9、恢复Ubuntu 14.04版本信息

  最后我们恢复ubuntu 14.04版本信息

  1. root@cm1:~# rm /etc/lsb-release /etc/lsb-release.bak
  2. root@cm1:~# mv /etc/lsb-release.bak /etc/lsb-release

  

4.11、通过CM管理多个集群

4.11.1、添加1个新的集群,机器名称为m2.idoall.org

  有的时候,因为业务原因,不同的服务我们要使用不同的集群,便于管理和维护,下面我们再使用CM来测试创建一个新集群Cluster 2

  添加其他主机,我们测试将m2.idoall.org也做为一个新集群添加到CM中。点击CM主页右上角的添加集群,会重复看到(参考4.10.4章节)的页面

  

  

  

  

  

  再继续安装,可以参考(4.10.5章节-4.10.7章节)的页面重复操作,下面只给出将m2.idoall.org加入到集群的安装过程中部分截图。

  m2.idoall.org机器上要有cloudera-manager-server、cloudera-manager-daemons、cloudera-manager-agent(这个可以不用安装,但机器上要有包)。cloudera-manager-server、cloudera-manager-daemons的安装,可以参考4.9.4章节,配置可以参考4.9.5章节,服务是启动状态。

  

  

  

  

  

4.11.2、完成安装,验证m2.idoall.org是否成功地添加到集群Cluster 2

  

4.12、向1个集群添加1台新主机

4.12.1、开始添加,输入要添加的机器名称s1.idoall.org

  

  

  选择存储库,为了保持统一,建议使用与当前CM一样的版本,然后会继续走4.10.5的步骤

  

  

  再继续安装,可以参考(4.10.5章节-4.10.7章节)的页面重复操作,下面只给出将s1.idoall.org加入到集群的安装过程中部分截图。

  m2.idoall.org机器上要有cloudera-manager-server、cloudera-manager-daemons、cloudera-manager-agent(这个可以不用安装,但机器上要有包)。

  cloudera-manager-server、cloudera-manager-daemons的安装,可以参考4.9.4章节,配置参考4.9.5章节。cloudera-manager-server的服务要在启动状态。

  

  

  

4.12.2、选择主机模

  

  

  

  

  

4.12.3、完成将s1.idoall.org添加到集群

  

4.12.4、验证s1.idoall.org是否成功地添加到集群Cluster 1

  

  

  

  到此为主,在Ubuntu14.04下使用apt-get方式,安装CDH5.12已经成功。并且支持中文,后面有什么服务或者机器要添加的,可以自己来做了。

5、FAQ

5.1、过程中如果出现”Incorrect string value: '\x“的提示

  是和数据库的编码有关,在mysql中执行以下语句:

  1. alter table CLIENT_CONFIGS convert to character set utf8;
  2. alter table CLUSTERS convert to character set utf8;
  3. alter table CLUSTERS_AUD convert to character set utf8;
  4. alter table CLUSTER_ACTIVATED_RELEASES convert to character set utf8;
  5. alter table CLUSTER_ACTIVATED_RELEASES_AUD convert to character set utf8;
  6. alter table CLUSTER_MANAGED_RELEASES convert to character set utf8;
  7. alter table CLUSTER_UNDISTRIBUTED_RELEASES convert to character set utf8;
  8. alter table CM_PEERS convert to character set utf8;
  9. alter table CM_VERSION convert to character set utf8;
  10. alter table COMMANDS convert to character set utf8;
  11. alter table COMMAND_SCHEDULES convert to character set utf8;
  12. alter table CONFIGS convert to character set utf8;
  13. alter table CONFIGS_AUD convert to character set utf8;
  14. alter table CONFIG_CONTAINERS convert to character set utf8;
  15. alter table CREDENTIALS convert to character set utf8;
  16. alter table GLOBAL_SETTINGS convert to character set utf8;
  17. alter table HOSTS convert to character set utf8;
  18. alter table HOSTS_AUD convert to character set utf8;
  19. alter table HOST_TEMPLATES convert to character set utf8;
  20. alter table HOST_TEMPLATE_TO_ROLE_CONF_GRP convert to character set utf8;
  21. alter table METRICS convert to character set utf8;
  22. alter table PARCELS convert to character set utf8;
  23. alter table PARCEL_COMPONENTS convert to character set utf8;
  24. alter table PROCESSES convert to character set utf8;
  25. alter table PROCESS_ACTIVE_RELEASES convert to character set utf8;
  26. alter table RELEASES convert to character set utf8;
  27. alter table RELEASES_AUD convert to character set utf8;
  28. alter table REVISIONS convert to character set utf8;
  29. alter table ROLES convert to character set utf8;
  30. alter table ROLES_AUD convert to character set utf8;
  31. alter table ROLE_CONFIG_GROUPS convert to character set utf8;
  32. alter table ROLE_CONFIG_GROUPS_AUD convert to character set utf8;
  33. alter table ROLE_STALENESS_STATUS convert to character set utf8;
  34. alter table SCHEMA_VERSION convert to character set utf8;
  35. alter table SERVICES convert to character set utf8;
  36. alter table SERVICES_AUD convert to character set utf8;
  37. alter table SNAPSHOT_POLICIES convert to character set utf8;
  38. alter table USERS convert to character set utf8;
  39. alter table USER_ROLES convert to character set utf8;
  40. alter table USER_SETTINGS convert to character set utf8;

博文作者:迦壹
博客地址:[Ubuntu14.04用apt在线/离线安装CDH5.1.2[Apache Hadoop 2.3.0]](http://idoall.org/blog/post/lion/11)
写作时间:2014-09-02 01:18
转载声明:可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明,谢谢合作!

Ubuntu14.04用apt在线/离线安装CDH5.1.2[Apache Hadoop 2.3.0]的更多相关文章

  1. Ubuntu14.04用apt在线/离线安装CDH5.1.2[Apache Hadoop 2.3.0]-old

    用markdown重写,请稳步这里http://www.cnblogs.com/lion.net/p/5477899.html

  2. Ubuntu14.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 说在前面的话  首先,查看下你的操作系统的版本. root@zhouls-virtual-machine:~# cat /etc/issue Ubuntu LTS \n \l r ...

  3. Ubuntu14.04下Mongodb官网安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 在这篇博客里,我采用了非官网的安装步骤,来进行安装.走了弯路,同时,也是不建议.因为在大数据领域和实际生产里,还是要走正规的为好. Ubuntu14.04下Mongodb(离线安 ...

  4. Centos7中在线/离线安装DockerCE最新版

    Docker在Centos7在线/离线安装 一.在线安装 1.检查系统是否支持,因为Docker 要求 CentOS 系统的内核版本高于 3.10 uname -r 2.确保 yum 包更新到最新 y ...

  5. ubuntu14.04 python + opencv 傻瓜式安装解决方案

    ubuntu14.04  python + opencv 傻瓜式安装解决方案 ubuntu下使python和opencv来做开发的话,总要花那么点时间来配置环境.我偶然间发现了一种傻瓜式安装办法希望快 ...

  6. 从零到一,利用kubeadm在ubuntu server 16.04 64位系统离线安装kubernetes v1.10.0

    说明 初步接触kubernets,记录学习过程 本教程目的利用kubeadm在ubuntu server 16.04 64位系统离线安装kubernets v1.10.0 环境信息 节点IP地址 角色 ...

  7. Ubuntu14.04下GAMIT10.6的安装

    #安装步骤将ubuntu切换到root用户权限 1 $sudo -s ##安装必要软件 1 2 3 4 5 $ apt-get install gcc $ apt-get install gfortr ...

  8. Ubuntu16.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 说在前面的话  首先,查看下你的操作系统的版本. root@zhouls-virtual-machine:~# cat /etc/issue Ubuntu LTS \n \l r ...

  9. ubuntu14.04环境下spyder的安装

    在ubuntu14.04系统中,默认在/usr/lib目录下安装了python2.7.6和python3.4.3,在该环境下安装spyder,然后使其链接到python3.4.3. 首先安装为pyth ...

随机推荐

  1. mysql 查看数据库、表的基本命令

    1:show databases; 查看所有的数据库,等同于select schema_name from information_schema.schemata\G.\G 替换;,以纵向报表的形式输 ...

  2. 重载运算符:类成员函数or友元函数

    类成员函数: bool operator ==(const point &a)const { return x==a.x; } 友元函数: friend bool operator ==(co ...

  3. 移动安全初探:窃取微信聊天记录、Hacking Android with Metasploit

    在这篇文章中我们将讨论如何获取安卓.苹果设备中的微信聊天记录,并演示如何利用后门通过Metasploit对安卓设备进行控制.文章比较基础.可动手性强,有设备的童鞋不妨边阅读文章边操作,希望能激发大家对 ...

  4. What is the ViewPort ? Why we need it .

    See also : http://stackoverflow.com/questions/14775195/is-the-viewport-meta-tag-really-necessary htt ...

  5. foreach循环 Java

    第一次遇到foreach循环,是在PHP的数组中,同样,在Java数组中,也遇到了foreach循环,都是用来遍历数组(集合).遍历数组,首先想到的一般都是用while,do while,for循环, ...

  6. jquery点赞和取消点赞插件

    <script> /* @author:Romey * 动态点赞 * 此效果包含css3,部分浏览器不兼容(如:IE10以下的版本) */ $(function(){ $("#p ...

  7. Win10/UWP开发-Ink墨迹书写

    在UWP开发中,微软提供了一个新型的InkCanvas控件用来让用户能书写墨迹,在新版的Edga浏览器中微软自己也用到了该控件使用户很方便的可以在web上做笔记. InkCanvas控件使用很简单,从 ...

  8. BT协议分析(1)—1.0协议

    简述 BT下载是采用P2P的下载方式,下载的大致形式采用如下图所示,处于图示中心的称为Tracker服务器,其余称为Peer.   缺点 1.资源的安全性 2.资源的实效性(没有上传者则BT也将失效) ...

  9. python和nodejs的aes128加密对比

    之前的机器人是用python写的,有同事想改写成nodejs版,但是验证一直通不过,于是帮忙爬了一下文档. python版的代码大概是长这样: #encoding:utf8 from Crypto.C ...

  10. python 使用virtualenvrapper虚拟环境管理工具

    centos 默认安装的python是2.6版本的 使用virtualenv 环境管理工具建立python虚拟环境的时候会遇到一些错误,DEPRECATION: Python 2.6 is no lo ...