logo头像
Snippet 博客主题

CM+CDH离线安装

** CM+CDH离线安装:** <Excerpt in index | 首页摘要>

​ Cloudera Manager可以轻松管理任何生产规模的Hadoop部署。通过直观的用户界面快速部署,配置和监控群集 - 完成滚动升级,备份和灾难恢复以及可定制警报。

<The rest of contents | 余下全文>

1.1 Cloudera 简介

1.1.1Cloudera 简介

官网:https://www.cloudera.com/

文档:https://www.cloudera.com/documentation/enterprise/5-12-x/topics/cdh_intro.html

​ CDH是Apache Hadoop和相关项目中最完整,经过测试和最流行的发行版。CDH提供了Hadoop的核心元素 - 可扩展存储和分布式计算 - 以及基于Web的用户界面和重要的企业功能。CDH是Apache许可的开源软件,是唯一提供统一批处理,交互式SQL和交互式搜索以及基于角色的访问控制的Hadoop解决方案。

CDH提供:

  • 灵活性 - 存储任何类型的数据并使用各种不同的计算框架对其进行操作,包括批处理,交互式SQL,自由文本搜索,机器学习和统计计算。

  • 集成 - 在完整的Hadoop平台上快速启动和运行,该平台可与各种硬件和软件解决方案配合使用。

  • 安全 - 处理和控制敏感数据。

  • 可扩展性 - 支持广泛的应用程序,并扩展和扩展它们以满足您的要求。

  • 高可用性 - 充满信心地执行任务关键型业务任务。

  • 兼容性 - 利用您现有的IT基础架构和投资。

    img

1.1.2Hadoop起源

​ 2004年,Cutting和同为程序员出身的Mike Cafarella决定开发一款可以代替当时的主流搜索产品的开源搜索引擎,这个项目被命名为Nutch。Nutch基于Lucence实现的搜索引擎,能够从互联网上抓取网页数据。抓取来的海量数据的存储问题。但是,这些海量数据都是非结构化数据,不能存在关系型数据库里。如果连数据的存储和管理都解决不了化,就谈不上后续为用户提供搜索服务,包括通过算法去优化检索速度。那时的Cutting正处在Freelancer的生涯 中,所以他希望自己的项目能通过一种低开销的方式来构建网页中的大量算法。幸运的是,Google这时正好发布了一项研究报告,报告中介绍了两款Google为支持自家的搜索引擎而开发的软件平台。这两个平台一个是GFS(Google File System),用于存储不同设备所产生的海量数据;另一个是MapReduce,它运行在GFS之上,负责分布式大规模数据。

​ 2006年cutting根据《Google File System》设计了Nutch的HDFS,hadoop distributed file system。

Hadoop最开始是nutch的子项目,目的是解决nutch的海量数据存储问题。在nutch 0.8版本之后,Hadoop独立处理,成为一个独立的项目。后来,又根据《Google MapReduce》设计了基于HDFS的MapRedce计算框架。

2006年之后,cutting带着Hadoop去了雅虎,当时有100多人的团队共同帮cutting完善hadoop。后来yahoo把Hadoop贡献了Apache。所以,现在Hadoop是Apache的顶级项目。

2.1Hadoop搭建

Hadoop的三种运行模式

  1. 独立(本地)运行模式:无需任何守护进程,所有的程序都运行在同一个JVM上执行。在独立模式下调试MR程序非常高效方便。所以一般该模式主要是在学习或者开发阶段调试使用 。

  2. 伪分布式模式: Hadoop守护进程运行在本地机器上,模拟一个小规模的集群,换句话说,可以配置一台机器的Hadoop集群,伪分布式是完全分布式的一个特例。

  3. 完全分布式模式:Hadoop守护进程运行在一个集群上。

3.1 单机伪分布模式

​ 只支持MapReduce,不支持HDFS。这种模式一般用于调试MapReduce任务用的。

3.1.1 准备Linux环境,最低的工作内存1G

内容详见:Vmware安装Centos6.9文档

3.1.2 关闭防火墙

临时关闭防火墙:service iptables stop

1
service iptables stop

永久关闭防火墙:chkconfig iptables off

1
chkconfig iptables off

注意:永久修改防火墙需要重启,永久和临时同时执行,可以不用重启。

3.1.3 配置主机名

查询主机名称:hostname

1
hostname

临时修改主机名:hostname

1
hostname <name>

永久修改主机名:vim /etc/sysconfig/network

1
vim /etc/sysconfig/network

注意:

1.永久修改主机名需要重启,永久和临时同时执行,可以不用重启。

2.主机名里不能有下滑线,或者特殊字符 #$,不然会找不到主机导致无法启动。

注意:

1.永久修改主机名需要重启,永久和临时同时执行,可以不用重启。

2.主机名里不能有下滑线,或者特殊字符 #$,不然会找不到主机导致无法启动。

3.1.4 配置hosts文件

执行: vim /etc/hosts

1
vim /etc/hosts

注意:

  1. 不要删除前两行内容。
  2. IP在前,主机名在后。

3.1.5 配置免密码登录

3.1.5.1 免密登陆原理

  1. A机器生成公钥和私钥

  2. 机器A发送自己的公钥到机器B,这个时候机器B有了机器A的公钥

  3. 机器B发送一个随机的字符串向机器A

  4. 机器A利用自己的私钥把字符串加密

  5. 机器A把加密后的字符串再次发送给机器B

  6. 机器B利用公钥解密字符串,如果和原来的一样,则OK。

3.1.5.1 免密登陆实现

  1. 生成自己的公钥和私钥 ssh-keygen

    1
    ssh-keygen
  2. 把生成的公钥copy到远程机器上 ssh-copy-id root@hadoop01

    1
    ssh-copy-id root@hadoop01

注意:如果是单机的伪分布式环境,自己节点也需要配置免密登录。

3.1.6 安装和配置jdk

  1. 执行:

    1
    vim /etc/profile
  2. 在尾行添加

    1
    2
    3
    4
    5
    #Set Java ENV
    JAVA_HOME=/home/jdk1.8.0_65
    PATH=$JAVA_HOME/bin:$PATH
    CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export JAVA_HOME PATH CLASS_PATH

保存退出 :wq

  1. 命令行执行:

    1
    source /etc/profile
  2. java -version 查看JDK版本信息。

    1
    java -version

3.1.7 上传和安装hadoop

下载地址:http://hadoop.apache.org/releases.html

注意:

source表示源码

binary表示二级制包(安装包)

3.1.7.1 解压Hadoop文件包

执行:tar -zxvf hadoop-2.7.1_64bit.tar.gz

1
tar -zxvf hadoop-2.7.1_64bit.tar.gz

3.1.7.2 Hadoop目录说明

bin目录:命令脚本

etc/hadoop:存放hadoop的配置文件

lib目录:hadoop运行的依赖jar包

sbin目录:启动和关闭hadoop等命令都在这里

libexec目录:存放的也是hadoop命令,但一般不常用

注意:最常用的就是bin和etc目录。

3.1.8 配置hadoop配置文件

Hadoop目录下/home/hadoop-2.7.1/etc/hadoop/目录下6个文件

3.1.8.1 hadoop-env.sh

执行:vim hadoop-env.sh

1
vim hadoop-env.sh

修改:修改java_home路径和hadoop_conf_dir 路径 25行 33行

1
2
3
4
#25行
export JAVA_HOME=/home/jdk1.8.0_65
#33行
export HADOOP_CONF_DIR=/home/hadoop-2.7.1/etc/hadoop

然后执行:source hadoop-env.sh编译文件。

1
source hadoop-env.sh

3.1.8.2 core-site.xml

命令行执行:vim core-site.xml

1
vim core-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
<configuration>
<!--用来指定hdfs的老大,namenode的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://tedu:9000</value>
</property>
<!--用来指定hadoop运行时产生文件的存放目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop-2.7.1/tmp</value>
</property>
</configuration>

3.1.8.3 hdfs-site .xml

命令行执行:vim hdfs-site.xml

1
vim hdfs-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
<configuration>
<!--指定hdfs保存数据副本的数量,包括自己,默认值是3-->
<!--如果是伪分布模式,此值是1-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!--设置hdfs的操作权限,false表示任何用户都可以在hdfs上操作文件-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>

3.1.8.4 mapred-site.xml

命令行执行:

1
2
3
cp mapred-site.xml.template mapred-site.xml

vim mapred-site.xml
1
2
3
4
5
6
7
<configuration>
<property>
<!--指定mapreduce运行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

3.1.8.5 yarn-site.xml

命令行执行:vim yarn-site.xml

1
vim yarn-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<!--指定yarn的老大 resoucemanager的地址-->
<name>yarn.resourcemanager.hostname</name>
<value>tedu</value>
</property>
<property>
<!--NodeManager获取数据的方式-->
<name>yarn.nodemanager.aux- services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

3.1.8.6 slaves

命令行执行:

1
vim slaves

修改主机名

3.1.9 配置hadoop的环境变量

  1. 文件最后追加文件

    HADOOP_HOME=/home/hadoop-2.7.1

    export HADOOP_HOME

  2. source /etc/profile 使更改的配置立即生效。

    1
    2
    3
    4
    5
    6
    #Set Java ENV
    JAVA_HOME=/home/jdk1.8.0_65
    HADOOP_HOME=/home/hadoop-2.7.1
    PATH=$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export JAVA_HOME PATH CLASSPATH HADOOP_HOME

3.1.10 格式化Namenode

执行:hdfs namenode -format

1
hdfs namenode -format

如果不好使,可以重启linux

当出现:successfully,证明格式化成功。

3.1.11 启动Hadoop

在/home/hadoop-2.7.1/sbin目录下

执行:./start-all.sh

1
./start-all.sh

3.1.12 验证启动成功

可以访问网址: http://192.168.220.128:50070