CDH4.1.2集群安装配置详细过程



CDH4.1.2

CDH 是Cloudera 完全开源的Hadoop 分布式系统架构,为了满足企业的需求而特别构建的系统。即一个开源的企业级分布式存储系统。全称:Cloudera Hadoop。

它是在Apache Hadoop基础上打入了很多patch。使之性能更好,更加满足生产环境。

CDH4.1.2使用的是apache 的hadoop 2.0版本,与之前的稳定的hadoop-1.x相比,Apache Hadoop 2.x有较为显著的变化。

Hadoop介绍

Hadoop是apache 的开源项目,开发的主要目的是为了构建可靠、可拓展、稳定的分布式的系统,hadoop 是一系列的子工程的总和,其中包含:

1. hadoop common:为其他项目提供基础设施

2. HDFS:分布式的文件存储系统

3. MapReduce:A software framework for distributed processing of large data setson compute clusters,一个简化分布式编程的框架。

4. 其他工程包含:Avro(序列化系 统),Cassandra(数据库项目)等。

Hadoop以 Hadoop 分布式文件系统HDFS (Hadoop Distributed File System)和MapReduce(Google MapReduce的开源实现)为核心,Hadoop为用户提供了系统底层细节透明的分布式基础架构。

  对于 Hadoop的集群来讲,可以分成两大类角色:Master和Salve。一个 HDFS 集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的 DataNode 管理存储的数据。MapReduce框架是由一个单独运行在主节点上的 JobTracker和运行在每个集群从节点上的TaskTracker共同组成的。主节点(NameNode)节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上,主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点(DataNode)仅负责由主节点指派的任务,当一个 Job 被提交 时,JobTracker 接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。

  从上面的介绍可以看出,HDFS 和MapReduce共同组成了Hadoop分布式系统体系结构的核心。HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce 在HDFS 的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop 分布式集群的主要任务。

 


集群环境

选择四台物理PC机,构建集群Hadoop环境。操作系统均为CentOS6.2或以上,集群中包括 4个节点: 1个Master,3个Salve节点,节点之间局域网连接,可以相互ping通。

Master机器主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行;3个Salve机器配置DataNode和TaskTracker的角色,负责分布式数据存储以及任务的执行。

 

机器

主机名

HDFS

MapReduce

YARN(Mapreduce2.0)

192.168.75.210

Master

NameNode

JobTracker

ResourcesManager

192.168.75.211

Slave01

DataNode

TaskTracker

NodeManager

192.168.75.212

Slave02

DataNode

TaskTracker

NodeManager

192.168.75.213

Slave03

DataNode

TaskTracker

NodeManager

 

详细配置:

1、修改主机名

按照上述表里的设置,将四台机器分别设置相应主机名。例如Master机器。

# hostname Master

# vim/etc/sysconfig/network

HOSTNAME=Master

重启机器。

四台机器都要设置,设置完后,重启机器。

2、修改 hosts 文件

#vim /etc/hosts

在文件里面添加如下配置:

192.168.75.210  Master

192.168.75.211  Slave01

192.168.75.212  Slave02

192.168.75.213  Slave03

并用scp命令复制到其他所有机器,即四台机器做相同配置。

3、配置SSH无密码登陆

SSH无密码原理简介:

首先在Master上生成一个密钥对,包括一个公钥和一个私钥,并将公钥复制到所有的slave上。

然后当 master 通过SSH 连接slave时,slave就会生成一个随机数并用master的公钥对随机数进行加密,并发送给master。最后master收到加密数之后再用私钥解密,并将解密数回传给slave,slave确认解密数无误之后就允许master不输入密码就可以进行连接。

3.1 配置Master无密码登录所有Slave

具体操作过程如下:

(1)Master机器上生成密码对

#ssh-keygen -t rsa –P  ’’

这条命是生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa 和 id_rsa.pub,默认存储在“/root/.ssh”目录下。

(2)接着在 Master 节点上做如下配置,把 id_rsa.pub 追加到授权的 key 里面去。

#cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys

(3)修改authorized_keys权限

权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用 RSA 功能。

# chmod600 ~/.ssh/authorized_keys

(4)修改SSH配置文件

#vim /etc/ssh/sshd_config

将下面三行注释去掉,并修改如下:

RSAAuthentication yes # 启用 RSA 认证

PubkeyAuthentication yes # 启用公钥私钥配对认证方式

AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)

设置完后,重启SSH服务

# servicesshd restart

(5)验证是否成功

#ssh Master

 

接下来的事儿是把公钥复制所有的 Slave机器上。使用下面的命令格式进行复制公钥:

#scp ~/.ssh/id_rsa.pub 远程用户名@远程服务器 IP:~/

例如:scp ~/.ssh/id_rsa.pub root@192.168.75.211:~/

 

以Slave01机器为例:

1)将Master上的id_rsa.pub复制到Slave01机器上root目录下。

登录到Slave01机器上。

2)在root目录下建立.ssh文件夹

这一步并不是必须的。如果已经存在.ssh目录,就不需要创建。

# mkdir~/.ssh

然后是修改文件夹“.ssh”的用户权限,把他的权限修改为“700”,用下面命令执行

# chmod700 ~/.ssh

3)追加到授权文件“authorized_keys”

#cat ~/id_rsa.pub >>~/.ssh/authorized_keys

4)修改权限

#chmod 600 ~/.ssh/authorized_keys

5)修改Slave01上的SSH配置文件

#vim /etc/ssh/sshd_config

RSAAuthentication yes # 启用 RSA 认证

PubkeyAuthentication yes # 启用公钥私钥配对认证方式

AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)

并重启SSH服务。

6)验证Master到Slave01的无密码登录

回到Master机器:

#ssh Slave01

看是否能成功进行无密码登录

7)删除id_rsa.pub文件

记得将Master复制过来的id_rsa.pub删除掉。

 

以同样的操作:步骤1)——7)对Slave2和Slave3做同样的操作。

 

3.2 配置所有Slave无密码登录Master

   和 Master 无密码登录所有 Slave 原理一样,就是把 Slave 的公钥追加到 Master 的“.ssh” 文件夹下的“authorized_keys”中。

以Slave01为例:
   1)首先创建Slave01自己的公钥和私钥,并把自己的公钥追加到自己的authorized_keys文件中。用到的命令如下:

#ssh-keygen -t rsa -P  ’’

# cat~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

2)接着是用命令“scp”复制“Slave01”的公钥“id_rsa.pub”到“Master” 的“/root”目录下,并追加到“Master”的“authorized_keys”中。

#scp ~/.ssh/id_rsa.pub root@192.168.75.210:~/

#cat ~/id_rsa.pub >>~/.ssh/authorized_keys

3)然后删除掉刚才复制过来的“id_rsa.pub”文件。

#rm ~/id_rsa.pub

4)验证从Slave01无密码登录到Master

#ssh Master

将Slave02和Slave03也做同样的操作。

 

4、安装Java

1)拷贝文件

在Master机器上/usr/目录下新建一个java目录

#make /usr/java

将下载好的linux  x86_64的jdk的安装文件jdk-6u31-linux-x64.bin拷贝到/usr/java目录下。

2)添加权限

#cd /usr/java

添加执行权限

#chmod +x jdk-6u31-linux-x64.bin

3)安装

#./ jdk-6u31-linux-x64.bin

4)安装完成后,配置环境变量

#vim /etc/profile

在末尾添加java的环境变量名

#set Java path

export JAVA_HOME=/usr/java/jdk1.6.0_31

exportCLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

exportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

5)保存退出后,使配置文件生效

# source/etc/profile

6)验证

执行 java -version 查看是否安装成功

[root@Master ~]# java -version

java version "1.6.0_31"

Java(TM) SE Runtime Environment (build1.6.0_31-b04)

Java HotSpot(TM) 64-Bit Server VM (build20.6-b01, mixed mode)

 

所有机器上做同样的操作。

可以将Master上安装好的java目录复制到其他Slave机器上,并配置环境变量即可。

5、安装配置CDH4.1.2

5.1 安装

到Cloudera官网上下载好CDH4.1.2源码包,此处采用源码包安装,为了方便后面的拷贝。安装目录清楚,安装操作方便。

源码包名称:hadoop-2.0.0-cdh4.1.2.tar.gz

在/usr/目录下新建一个cdh4目录,主要用于存放CDH4.1.2的安装软件,例如后面的Hbase,hive等。

#mkdir /usr/cdh4

将CDH4.1.2源码包拷贝到该目录下,并解压

# tar–zxvf hadoop-2.0.0-cdh4.1.2.tar.gz

将解压后的目录修改为hadoop-2.0,便于操作,不然名称很长。

# mv hadoop-2.0.0-cdh4.1.2 hadoop-2.0

5.2 配置

  下面开始配置CDH4.1.2

进入到Hadoop-2.0的配置文件目录

# cdhadoop-2.0/etc/hadoop/

(1)配置Hadoop java环境变量

在配置hadoop-env.sh内添加java环境变量

# vim hadoop-env.sh

在末尾添加如下内容:

#set java path

export JAVA_HOME=/usr/java/jdk1.6.0_31

(2)编辑 core-site.xml

  添加如下内容:

  <property>

   <name>fs.default.name</name>

   <value>hdfs://Master:9100</value>

   <final>true</final>

 </property>

 <property>

   <name>hadoop.tmp.dir</name>

   <value>/hadoop/tmp</value>

</property>

在根目录下,新建hadoop目录,在hadoop目录内建立tmp文件夹。作为hadoop临时数据存放目录。

 

(3)配置hdfs-site.xml

<configuration> 

<property>

    <name>dfs.replication</name>

    <value>1</value>

 </property> 

 <property>

   <name>dfs.namenode.name.dir</name>

   <value>file:/hadoop/name</value>

   <final>true</final>

 </property>

 <property>

   <name>dfs.datanode.data.dir</name>

   <value>file:/hadoop/data</value>

   <final>true</final>

 </property>

 <property>

    <name>dfs.permission</name>

    <value>false</value>

 </property>

在/hadoop/内建立元数据存储目录name,HDFS存储目录data。

(4)配置mapred-site.xml

因为采用的是Mapreduce2.0版本。所有使用YARN。见下面第一个配置参数。 

<property>

   <name>mapreduce.framework.name</name>

   <value>yarn</value>

 </property>

 <property>

   <name>mapreduce.job.tracker</name>

   <value>192.168.75.210:9101</value>

   <final>true</final>

  </property>

<property>

   <name>mapred.system.dir</name>

   <value>file:/hadoop/mapred/system</value>

   <final>true</final>

 </property>

 <property>

   <name>mapred.local.dir</name>

   <value>file:/hadoop/mapred/local</value>

   <final>true</final>

 </property>

在/hadoop目录内建立mapred文件夹,并在里面建立local和system目录。

(5)配置yarn-site.xml

  <property>

     <name>yarn.resourcemanager.resource-tracker.address</name>

     <value>192.168.75.210:18025</value>

 </property>

 <property>

     <name>yarn.resourcemanager.address</name>

     <value>192.168.75.210:18040</value>

 </property>

 <property>

     <name>yarn.resourcemanager.scheduler.address</name>

     <value>192.168.75.210:18030</value>

 </property>

 <property>

     <name>yarn.resourcemanager.admin.address</name>

     <value>192.168.75.210:18141</value>

 </property>

 <property>

     <name>yarn.resourcemanager.webapp.address</name>

     <value>192.168.75.210:8088</value>

 </property>

 <property>

     <name>yarn.nodemanager.aux-services</name>

     <value>mapreduce.shuffle</value>

 </property>

  <property>

<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

     <value>org.apache.hadoop.mapred.ShuffleHandler</value>

 </property>

(6)配置slaves

#vim slaves

添加Slave节点的IP。

  192.168.75.211

192.168.75.212

192.168.75.213

 

(7)配置Hadoop环境变量

  vim/etc/profile

添加如下内容:

#set Hadoop path

export HADOOP_HOME=/usr/cdh4/hadoop-2.0

export HADOOP_COMMON_HOME=${HADOOP_HOME}

export HADOOP_HDFS_HOME=${HADOOP_HOME}

export PATH=$PATH:$HADOOP_HOME/bin

export PATH=$PATH:$HADOOP_HOME/sbin

export HADOOP_MAPRED_HOME=${HADOOP_HOME}

export YARN_HOME=${HADOOP_HOME}

exportHADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop

exportHDFS_CONF_DIR=${HADOOP_HOME}/etc/hadoop

exportYARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop

 

至此Hadoop配置完成。

5.3 集群配置

将配置好的Hadoop-2.0文件夹复制到其三台Slave节点上。路径要一致。并创建相应的存储目录。

将环境变量文件/etc/profile也复制到其他节点上。

chown -R 1106:592 *

service iptables stop

chkconfig iptables off

 

 

6、格式化集群

以上配置都部署好后,就开始运行Hadoop环境。首先格式化HDFS集群文件系统。

到Master节点上执行如下命令:

#hadoop namenode -format-clusterid clustername

会打印相应的信息。看到successfully formatted 表示格式化成功。

7、开启Hadoop服务

启动hdfs

#start-dfs.sh

启动yarn

#start-yarn.sh

 

这里可以直接执行

#start-all.sh

它包括了start-dfs.sh和start-yarn.sh

启动过程如下:


要是停止的话,执行stop-all.sh

8、检验

   到Master节点上执行jps命令:

   

   必须有如上三个进程。

   到Slave节点上执行jps命令:


必须有如上2个进程。

以上2个图表示HDFS的NameNode和DataNode进程以及Mapreduce的resourceManager和NodeManager进程都已经正确启动完成。

 

也可以通过web来查看

查看HDFS。

http://192.168.75.210:50070

可以看到如下结果:


查看Mapreduce

http://192.168.75.210:8088


 

 

下面运行一个简单的wordcount例子:

 

 

在Master上做如下操作:(此处是把Master也当做client)

在根目录下新建一个test目录。里面创建两个测试文件。test1和test2.每个文件里包含了很多hello world和hello hadoop。

例如:

       

在HDFS里新建一个input目录



将这两个test文件上传到input目录。



开始运行Mapreduce进行计算。

# cd /usr/hadoop-cdh4/hadoop-2.0/share/hadoop/mapreduce/

#hadoopjar hadoop-mapreduce-examples-2.0.0-cdh4.1.1.jar wordcount input output 


输出如下:


表示成功。

到web里也能看到

 

到HDFS里查看结果

可以看到统计结果。

 

至此一个Hadoop集群环境搭建完成。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值