hadoop集群配置范例及问题总结

时间:2024.4.20

HADOOP-0.20.203.003.0分布式集群配置

硬件环境 1. 虚拟机VMWare Workstation

2. 两台机器均安装ubuntu11,采用桥接模式,需要两个物理ip地址,下面用192.168.1.100

和192.168.1.101代替,NAT模式无法实现ubuntu内ping通主机

3. java jdk1.6.0_31

4. namenode:192.168.1.100 namenode

datanode:192.168.1.101 datanode

注意: 三台机器dns 和 默认网关必须一致。登陆密码一致最好。而且务必三台机器互相ping通主机,即主机名和ip解析正确。若ping不通,修改/etc/hosts文件,使用sudo vi /etc/hosts命令,设置如下(namenode):

192.168.1.100 namenode

192.168.1.101 datanode

Datanode(datanode)的设置为:

192.168.1.100 namenode

192.168.1.101 datanode

本集群将namenode和 jobtracker 设置成一台机器 即namenode。

在Hadoop中,主机名不要包含下划线“_”,但可以有横线“-”。否则启动hadoop时报错:ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.io.IOException: Incomplete HDFS URI, no host: hdfs://namenode:9000 Incomplete HDFS URI

使用hostname命令查看主机名,修改主机名:

主机名存放在/etc/hostname文件中,编辑hostname文件,在文件中输入新的主机名并保存该文件即可。注销重新登录。

本集群在Root用户下安装

配置ssh

安装ssh:sudo apt-get install openssh-server openssh-client,若以安装,继续以下步骤

开启命令:service ssh restart。必须配置SSH使用无密码公钥来进行免密码登陆各个节点。本集群设置如下:

在namenode节点上根目录下执行:

[root@namenode root]$ssh-keygen –t rsa

一路回车,遇到y/n 选择y。即在默认目录下/root/.ssh/生成

id_rsa 和 id_rsa.pub 2个文件,第一个为私钥,第二个为公钥。

[root@namenode root]$cd .ssh

进入.ssh目录下,将id_rsa.pub 复制给authorized_keys文件,并给予权限。

[root@namenode root]$cp id_rsa.pub authorized_keys

[root@namenode root]$chmod 644 authorized_keys

测试 ssh localhost 和ssh namenode,若成功,则可免密码登陆,退出命令exit。注意务必要exit,否则多层嵌套,会晕。

在datanode上根目录下 建立 .ssh文件夹 并给予权限

[root@datanode root]$mkdir .ssh

[root@datanode root]$chmod 755 .ssh [root@datanode root]$cd .ssh

然后将namenode中的公钥远程复制给datanode,需要密码(yes,密码)

[root@namenode .ssh]$scp authorized_keys 并且进入datanode给予权限:

[root@datanode .ssh]$chmod 644 authorized_keys

下面可以通过SSH命令试试是否可以无密码登陆。最好先重新启动下命令:

[root@namenode root]$service sshd restart

[root@namenode root]$ssh datanode

如果可以无密码登陆,即成功!

各datanode免密码登陆namenode

将各个datanode上的id_rsa.pub追加到namenode的authorized_keys

在所有datanode上依次执行如下命令:

scp id_rsa.pub namenode:/root/.ssh/datanodeip地址.id_rsa.pub

ssh namenode

如果可以无密码登陆,即成功!exit退出。

Ssh主机名时,错误:Agent admitted failure to sign using the key. 解決办法: 应用 ssh-add 指令將私钥加进来

ssh-add .ssh/id_rsa

出现ssh localhost死活都无法免密码登陆,检查各级目录文件的权限,注意root目录权限

chmod 755 . (或者更严格)

chmod 755 .ssh

chmod 644 .ssh/authorized_keys

JDK安装

本集群安装jdk1.6.0_31版本,以下的配置所有节点均相同。安装在usr/java下

1. 通过授权、安装命令安装jdk

[root@namenode /usr/java ]$chmod +x jdk-6u31-linux-rpm.bin

[root@namenode /usr/java]$./jdk-6u31-linux-rpm.bin

2. 配置jdk文件,在/etc/profile 中配置 环境变量 如下:

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

export PATH=”$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:”

export CLASSPATH=”$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib”

3 测试。

Java –version

出现jdk版本信息,即安装成功。若不成功 检查配置是否正确 Hadoop安装

本集群安装hadoop-0.20.203.0版本,安装hadoop

[root@namenode root]$ tar –zvxf hadoop-0.20.203.0.tar.gz

1. 配置/root/hadoop-0.20.203.0/conf/hadoop-env.sh

配置JAVA_HOME 和 HADOOP_HOME 两个路径。

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

export HADOOP_HOME=”/root/hadoop-0.20.203.0”

2. 配置如下五个文件:conf文件夹下

①core-site.xml

<configuration>

<property>

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

<value>hdfs://namenode:9000</value>//我们使用端口号9000 </property>

<property>

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

<value>/root/tmp</value>

</property>

</configuration>

② hdfs-site.xml

<configuration>

<property>

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

<value>/root/hdfs/name</value>

<final>true</final>

</property>

<property>

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

<value>/root/hdfs/data</value>

<final>true</final>

</property>

<property>

<name>fs.checkpoint.dir</name>

<value>/root/hdfs/namesecondary</value>

<final>true</final>

</property>

<property>

<name>dfs.replication</name>//若datanode数目小于3,不能配置为3,否则报错 <value>1</value>

</property>

</configuration>

③mapred-site.xml

<name>mapred.job.tracker</name>//jobtracker ip地址,我们使用端口号9001 <value>namenode:9001</value>

</property>

<property>

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

<value>/root/mapred/local</value>

<final>true</final>

</property>

<property>

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

<value>/tmp/hadoop/mapred/system</value>

<final>true</final>

</property>

<property>

<name>mapred.tasktracker.map.tasks.maximum</name>

#每个datanode上并行的map最大值

<value>2</value>

<final>true</final>

</property>

<property>

<name>mapred.tasktracker.reduce.tasks.maximum</name>

#每个datanode上并行的reduce最大值

<value>2</value>

<final>true</final>

</property>

<property>

<name>mapred.child.java.opts</name>

<value>-Xmx200m</value>

</property>

</configuration>

④ 配置masters

192.168.1.100//namenodeip

⑤ 配置slavers

192.168.1.101//datanodeip

3. 复制hadoop文件夹到其他节点

[root@namenode root]$scp –r hadoop-0.20.203.0 datanode:/root

4. 基本命令

①格式化namenode中的hdfs文件系统

[root@namenode root]$cd hadoop-0.20.203.0

[root@namenode hadoop-0.20.203.0]$bin/hadoop namenode –format ②启动

[root@namenode hadoop-0.20.203.0]$bin/start-all.sh

可在logs中查看日志信息。 若启动过程中需要密码登陆,则ssh安装配置有问题。

若启动datanode报错:Unrecognized option: -jvm

修改bin/hadoop 文件,将-jvm server,改为-server

可以登录namenode:50070 查看namenode状态

可以登录namenode:50030 查看jobtracker状态。

③关闭

[root@namenode hadoop-0.20.203.0]$bin/stop-all.sh

④查看节点

[root@namenode hadoop-0.20.203.0]$bin/hadoop dfsadmin –report


第二篇:hadoop部署总结


采用双namenode节点,多datanode节点配置。

在新版本HDFS的配置中,所有节点的配置文件都是统一的(除ssh部分),不用单独配置NameNode和DataNode。

假设我们有三台服务器,主机名分别为fenbu01、fenbu02、fenbu03

fenbu01为namenode节点,fenbu02为datanode节点,fenbu03待用

1、更改各节点hosts文件

vi /etc/hosts

127.0.0.0 localhost localhost

172.xx.xx.10 fenbu01 fenbu01

172.xx.xx.11 fenbu02 fenbu02

172.xx.xx.12 fenbu03 fenbu03

2、创建dbrg用户

useradd -u 500 -g 500 -p 123456 -d /home/dbrg dbrg

在/home/dbrg/下创建hadoopinstall目录

mkdir /home/dbrg/hadoopinstall

3、解压hadoop包

下载地址 /dyn/closer.cgi/hadoop/common/

ftp hadoop到/home/dbrg/hadoopinstall

gzip -d hadoop-0.23.1.tar.gz

tar -xvf hadoop-0.23.1.tar

ln -s hadoop-0.23.1 hadoop

mkdir /home/dbrg/hadoopinstall/hadoop-config

4、SSH配置

在namenode节点上对dbrg用户创建公钥(datanode节点无需操作此步骤)

su dbrg

$ssh-keygen -t rsa

这个命令将为fenbu01上的用户dbrg生成其密钥对,询问其保存路径时直接回车采用默认路径,

当提示要为生成的密钥输入passphrase的时候,直接回车,也就是将其设定为空密码。 $cp id_rsa.pub authorized_keys

$chmod 644 authorized_keys

$scp authorized_keys fenbu02:/home/dbrg/.ssh/

目录结构应该是这样的

[dbrg@fenbu01 .ssh]$ ls -la

drwx------ 2 dbrg dbrg 4096 04-01 15:30 .

drwx------ 5 dbrg dbrg 4096 04-01 15:37 ..

-rw-r--r-- 1 dbrg dbrg 394 04-01 15:32 authorized_keys

-rw------- 1 dbrg dbrg 1675 04-01 15:24 id_rsa

-rw-r--r-- 1 dbrg dbrg 394 04-01 15:24 id_rsa.pub

-rw-r--r-- 1 dbrg dbrg 1192 04-01 15:34 known_hosts

root权限下修改文件/etc/ssh/sshd_config

#去除密码认证

PubkeyAuthentication yes

PasswordAuthentication no

AuthorizedKeyFile .ssh/authorized_keys

service sshd restart

这时候namenode ssh无法直接登陆了,换用xmanager

然后到datanode节点操作

scp到datanode节点的文件记得赋予权限

保证authorized_keys只对其所有者有读写权限,其他人不允许有写的权限,否则SSH是不会工作的。

$chmod 644 authorized_keys

5、配置集群环境

在vi /home/dbrg/.bashrc文件内添加

#hadoop 0.23 required settings

export HADOOP_DEV_HOME=/home/dbrg/hadoopinstall/hadoop #设置你hadoop的路径,需要修改一下

export HADOOP_MAPRED_HOME=${HADOOP_DEV_HOME}

export HADOOP_COMMON_HOME=${HADOOP_DEV_HOME}

export HADOOP_HDFS_HOME=${HADOOP_DEV_HOME}

export YARN_HOME=${HADOOP_DEV_HOME}

export HADOOP_CONF_DIR=/opt/dbrg/hdfs/conf #conf目录也可以按照Hadoop-0.20.*版本的特点设置在${HADOOP_DEV_HOME}/conf文件夹下。

export HDFS_CONF_DIR==/opt/dbrg/hdfs/conf #可单独设置路径

export YARN_CONF_DIR=${HADOOP_DEV_HOME}/conf #可单独设置路径

cd /opt

mkdir dbrg

cd dbrg

mkdir hdfs

cd hdfs

mkdir conf

然后进入hadoop

cd /home/dbrg/hadoopinstall/hadoop

mkdir conf

cp share/hadoop/common/templates/conf/* /home/dbrg/hadoopinstall/hadoop/conf/

cp share/hadoop/common/templates/conf/* /opt/dbrg/hdfs/conf

6、JAVA环境配置

先查看下java的版本情况,要求jdk1.6以上。

#rpm -qa|grep java

如果有安装就会出现安装的jdk的相关信息,太低的java(系统自带)要删除

yum remove java

下载jdk1.6.bin,安装下 /javase/downloads/

vi /etc/profile -------打开profile文件

vi /home/dbrg/.bash_profile

假设jdk的安装目录为:/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre

然后在文件的末尾加上以下三句话

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

export

CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin

7、配置hadoop内部环境

1)修改dbrg用户的/home/dbrg/hadoopinstall/hadoop/conf/hadoop-env.sh中的JAVA_HOME路径

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

export

CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin

2)修改/home/dbrg/hadoopinstall/hadoop/conf/core-site.xml

<?xml version="1.0"?>

<configuration>

<property>

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

<value>360</value>

<description>Number of minutes between trash checkpoints.

</description>

</property>

<property>

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

<value>/opt/dbrg/hadoop</value>

<description>A base for other temporary directories.</description>

</property>

请注意在多个NameNode情况下,core-site.xml不需要设置fs.defaultFS,只需在下面hdfs-site.xml设置对应内容即可。

3)/home/dbrg/hadoopinstall/hadoop/conf/hdfs-site.xml

重新建立/home/dbrg/hadoopinstall/hadoop/conf/hdfs-site.xml

<?xml version="1.0"?>

<configuration>

<property>

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

<value>/opt/dbrg/hdfs/name</value>

</property>

<property>

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

<value>/opt/dbrg/hdfs/edits</value>

</property>

<property>

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

<value>/opt/dbrg/hdfs/checkpoint</value>

</property>

<property>

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

<value>/opt/dbrg/hdfs/checkpoint_edits</value>

</property>

<property>

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

<value>/opt/dbrg/hdfs/data</value> </property>

<property>

<name>dfs.federation.nameservices</name> <value>ns1,ns2</value>

</property>

<property>

<name>dfs.namenode.rpc-address.ns1</name> <value>fenbu01:9000</value>

</property>

<property>

<name>dfs.namenode.http-address.ns1</name> <value>fenbu01:50070</value>

</property>

mkdir /opt/dbrg/hdfs/name

mkdir /opt/dbrg/hdfs/edits

mkdir /opt/dbrg/hdfs/checkpoint

mkdir /opt/dbrg/hdfs/checkpoint_edits mkdir /opt/dbrg/hadoop

然后全部chmod 777

4)说明datanode节点

vi /home/dbrg/hadoopinstall/hadoop/conf/slaves fenbu02

同步conf

cp /home/dbrg/hadoopinstall/hadoop/conf/* /opt/dbrg/hdfs/conf/

mkdir /dbrg

chmod 777 /dbrg

有一点注意事项:

把slaves跟这个hadoop-env都移动到/etc/hadoop里面去

8、启动HDFS Federation

1)执行Format

/home/dbrg/hadoopinstall/hadoop/bin/hdfs namenode -format -clusterid hadoop

重新格式化namenode,注意:格式化之前必须删除namenode及datanode上的name、data、tmp文件,防止格式化造成的namespaceID不一致,不过格式化后hdfs上的数据会丢失。

2)启动sbin/start-dfs.sh

/home/dbrg/hadoopinstall/hadoop/sbin/start-dfs.sh

ssh到各个节点上,使用jps命令查看对应的NameNode或者DataNode Daemon是否启动。

9、查看UI界面

浏览器中键入:

http://fenbu01:50070

更多相关推荐:
hadoop认识总结

一对hadoop的基本认识Hadoop是一个分布式系统基础技术框架由Apache基金会所开发利用hadoop软件开发用户可以在不了解分布式底层细节的情况下开发分布式程序从而达到充分利用集群的威力高速运算和存储的...

Hadoop学习总结

Hadoop学习总结一背景随着信息时代脚步的加快各类数据信息越来越多海量数据的来源列举如下纽约证券交易所每天产生1TB的交易数据Facebook存储着约100亿张照片约1PB数据Ancestrycom一个家谱网...

hadoop总结

Hadoop概念Hadoop是一个能够对大量数据进行分布式处理的软件框架Hadoop的特点1可靠性Reliablehadoop能自动地维护数据的多份副本并且在任务失败后能自动地重新部署redeploy计算任务2...

hadoop原理_自己的总结

用户提交给hadoopclient的command指定了输入路径输出路径如下所示cmdquotHADOOPHOMEbinhadoopbistreaminginputLINKPATHpartinputPATCHP...

最新hadoop应用总结

Hadoop应用总结一系统配置1安装linuxubuntu系统2安装开启opensshserversudoaptgetinstallopensshserver3建立ssh无密码登录sshkeygentdsaP3...

hadoop常见启动问题总结

Hadoop节点问题总结1.hadoop主节点意外关机重启后hadoop不能启动.Hadoopnamenode由于某些原因关机重启,重新启动后hadoop服务不能正常启动.每次开机都得重新格式化一下nameno…

Hadoop搭建总结

Hadoop之集群搭建总结Summershyn夏超俊这是个人在参照网上一下文章自己尝试搭建并碰到一些困难和问题最后终于成功之后的总结希望可以对你有点帮助有三台机子1921681101master19216811...

Hadoop 2.0中单点故障解决方案总结

Hadoop20中单点故障解决方案总结Hadoop10内核主要由两个分支组成MapReduce和HDFS众所周知这两个系统的设计缺陷是单点故障即MR的JobTracker和HDFS的NameNode两个核心服务...

学习pdca的心得体会

学习PDCA后的心得体会昨天很荣幸地在李总的带领下学习了PDCA管理方法现将本人对PDCA的认识和学习后的一些心得体会汇报如下PDCA又叫戴明环它将一个解决问题需要的四个阶段即计划实施检查处理完美有序地揉和在一...

pdca计划

计划Plan实施Do检查Check处理ActionISO9000认证的核心是持续改进以下是我在网上找的和我学的一样供参考PDCA循环也称戴明环是由美国著名质量管理专家戴明WEDeming首先提出的这个循环主要包...

pdca模式

PDCA管理模式计划Plan实施Do检查Check处理ActionISO9000认证的核心是持续改进以下是我在网上找的和我学的一样供参考PDCA循环也称戴明环是由美国著名质量管理专家戴明WEDeming首先提出...

radius 总结

从事Radius协议开发有段时间了小弟不怕才疏学浅卖弄一下从RADIUS协议谈谈对身份认证的认识也总结一下自己一RADIUS协议原理RADIUSRemoteAuthenticationDialInUserSer...

hadoop总结(19篇)