您的位置:首页 > 运维架构

Hadoop简介及集群的安装

2015-05-20 14:36 295 查看
Hadoop简介及安装过程



概述:Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,以Hadoop分布式文件

系统(HDFS,Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的开源

实现)为核心的hadoop为用户提供了系统底层细节透明的分布式基础框架。HDFS的高容错

性、高伸缩性等优点允许用户将Hadoop部署在低廉的硬件上,形成分布式系统;MapReduce

分布式编程模型允许用户在不了解分布式系统底层细节的情况下开发并行应用程序。所以

用户可以利用Hadoop轻松地组织计算机资源,从而搭建自己的分布式计算平台,并且可以

充分利用集群的计算和存储能力,完成海量数据的处理。

安装过程:

创建用户组

groupadd hadoop 添加一个组

useradd hadoop -g hadoop 添加用户

IP的配置

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=none

ONBOOT=yes

TYPE=Ethernet

NETMASK=255.255.255.0

IPADDR=192.168.10.11

USERCTL=no

PEERDNS=yes

GATEWAY=192.168.10.1(路由器的IP地址)

保存退出,重启网卡

$ service network restart

查看ip

$ifconfig

关闭防火墙

$chkconfig iptables off

$iptables -F

$service iptables save

修改主机名

vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=master-1

GATEWAY=192.168.10.11

#其它节点依次修改

配置hosts文件

vi /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.10.11 master-1

192.168.10.12 master-2

192.168.10.13 slave-1

192.168.10.14 slave-2

语言配置

如果不配置语言,中文打印出来的可能会是乱码,因为Hadoop默认的输出写死的是utf-8

vi /etc/sysconfig/i18n

LANG=en_US.UTF-8

查看修改后的情况

$echo $LANG

en_US.UTF-8

在linux服务器安装Hadoop之前,首先安装两个准备软件

1.JDK1.6或者更高版本,Hadoop 2.7.0仅支持JDK1.7+

2.SSH(安全外壳协议),推荐安装OpenSSH

之所以安装这两个软件,首先Hadoop的编译及MapReduce的运行都需要使用JDK.

其次,Hadoop需要通过SSH来启动slave列表中各台主机的守护进程,因为SSH也是必须安装的。

(1)下载和安装JDK1.7

下载地址:

http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html
执行安装:

rpm -ivh jdk-7-linux-i586.rpm

配置环境变量:

$vi /etc/profile

在该profile文件中最下面添加:

export J***A_HOME="/usr/java/jdk1.7.0"

export PATH="$PATH : $J***A_HOME/bin:$J***A_HOME/jre/bin:"

export CLASSPATH="$CLASSPATH:$J***A_HOME/lib:$J***A_HOME/jre/lib"

添加完毕保存退出

$java -version

出现java version "1.7.0"的时候表示安装成功。

(2)SSH免身份登录

进入集群用户 home目录

生成公钥和私钥 主节点到其它节点

ssh-keygen -t rsa

默认在 ~/.ssh目录生成两个文件:

id_rsa :私钥

id_rsa.pub :公钥

导入公钥到认证文件,更改权限

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

首先将公钥复制到其他服务器,主节点向其它节点复制.

scp ~/.ssh/id_rsa.pub xxx@host:/home/xxx/id_rsa.pub

以下命令需要在子节点上操作

cat ~/id_rsa.pub >> ~/.ssh/authorized_key

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

执行完以上几步,主节点主可以和子节点无密码连接了.测试命令

ssh 子节点主机名或ip地址,第一次连接需确认,第二次以后就不用了

(3)安装运行Hadoop

Hadoop分别从三个角度将主机划分为两种角色。第一,划分为master和slave,

即主人与奴隶;第二,从HDFS的角度,将主机划分为NameNode和DataNode;第三,

从MapReduce的角度,将主机划分为JobTracker和TaskTracker。

Hadoop版本方面有官方发行版与cloudera版,其中cloudera版是Hadoop的商用版本。

Hadoop有三种运行方式:单节点方式、单机伪分布方式及全分布方式



解压介质:

$tar zxvf hadoop-2.0.0-cdh4.4.0.tar.gz

增加Hadoop环境变量

$vi .bashrc

HADOOP_HOME=/home/cup/hadoop-2.0.0-cdh4.2.1

HADOOP_MAPRED_HOME=$HADOOP_HOME

HADOOP_COMMON_HOME=$HADOOP_HOME

HADOOP_HDFS_HOME=$HADOOP_HOME

YARN_HOME=$HADOOP_HOME

HADOOP_CONF_HOME=${HADOOP_HOME}/etc/hadoop

YARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop

保存并退出

修改Hadoop配置文件

首先,在hadoop中添加J***A环境

vi hadoop-env.sh

export J***A_HOME=/usr/java/jdk1.7.0

保存并退出

其次,配置hadoop相关配置文件

$vi core-site.xml



<property>

<name>fs.defaultFS</name> 主节点名字,确定主节点机器

<value>hdfs://master-1:9000</value>

</property>

<property>

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

<value>/home/hadoop/tmp</value>

</property>

<property>

<name>fs.trash.interval</name>

<value>1440</value>

</property>

$vi hdfs-site.xml



<property>

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

<value>/home/hadoop/hadoopworkspace/dfs/name</value>

</property>

<property>

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

<value>/home/hadoop/hadoopworkspace/dfs/data</value>

</property>

<property>

<name>dfs.replication</name> 备份数量

<value>3</value>

</property>

<property>

<name>dfs.permissions</name> 权限认证(默认false)

<value>false</value>

</property>

$vi mapred-site.xml



<property>

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

<value>yarn</value>

</property>

<property>

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

<value>hdfs://master-1:9001</value>

<final>true</final>

</property>

<property>

<name>mapreduce.jobtracker.address</name>

<value>master-1:9002</value>

<description>The host and port that the MapReduce job tracker runs

at. If "local", then jobs are run in-process as a single map

and reduce task.

</description>

</property>

<property>

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

<value>/home/hadoop/hadoopworkspace/mapred/system</value>

<final>true</final>

</property>

<property>

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

<value>/home/hadoop/hadoopworkspace/mapred/local</value>

<final>true</final>

</property>

$vi yarn-site.xml

<property>

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

<value>master-1:8080</value>

</property>

<property>

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

<value>master-1:8081</value>

</property>

<property>

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

<value>master-1:8082</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>

============

配置节点,当然如果要是安装的伪分布模式,slaves可以配置成master-1


$vi slaves

slave-1

slave-2

保存并退出

启动集群

$hdfs namenode -format //格式化文件系统

$bin/start-all.sh

浏览器中输入
http://192.168.10.11:8088可以查看mapreduce集群状态 http://192.168.10.11:50070可以查看hdfs状态
$jps 查看进程

NameNode:

ResourceManager

NameNode

SecondaryNameNode

DataNode:

NodeManager

DataNode

注:有些朋友在构建集群的过程中,可能第一次的时候搭建成功了,然后又修改了某些配置文件、又执行了

hdfs namenode -format,结果发现怎么都启动不了datanode了。

原因:数据节点的namespaceID与NN的namespaceID不一致,namespaceID是文件系统的唯一标识,当文件系统

第一次格式化时便会被创建,这个标识符也要求各DataNode和NameNode保持一致。

解决方案:

修改namespaceID, $vi /hadoop/dfs/data/current/VERSION

#Tue Jul 25 17:31:22 JST 2015
namespaceID=590008784
storageID=DS-230267979-192.168.10.12-50010-1342056014871
cTime=0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: