Hadoop 2.0集群配置详细教程[虚拟机下配置成功]

本文详细介绍了一个包含四个节点的Hadoop集群的搭建过程,包括物理机准备、账户创建、JDK安装、SSH无密码登录配置、源码下载及配置、启动集群和服务等关键步骤。

1)、机器准备:

物理机器总共4台,想配置基于物理机的hadoop集群中包括4个节点: 1 Master 3 Salve

节点之间局域网连接,可以相互 ping通   IP分布为:
192.168.216.131 hadoop1
192.168.216.132 hadoop2
192.168.216.133 hadoop3
192.168.216.134 hadoop4

操作系统为CentOS6.2 64bit
Master
机器主要配置NameNodeJobTracker的角色,负责总管分布式数据和分解任行;

3Salve机器配置DataNodeTaskTracker的角色,负责分布式数据存以及任行。

实应该还应该1Master机器,用来作为备用,以防止Master器宕机,有一个用。

续经验积累一定段后上一台Master机器。


2)、创建账户

使用root所有机器后,所有的机器都创建 hadoop
useradd hadoop
passwd hadoop

/home/下就会生成一个 hadoop,目路径 /home/hadoop

创建相关的目录

需要数据及目的存放路径

码及工具存放的路径
mkdir -p /home/hadoop/source
mkdir -p /home/hadoop/tools

数据点存放的路径到跟目下的hadoop文件夹,里是数据点存放目需要有足够的空存放
mkdir -p /hadoop/hdfs
mkdir -p /hadoop/tmp
mkdir -p /hadoop/log
置可写权限
chmod -R 777 /hadoop

java安装程序路径
mkdir -p /usr/java


3)、安装JDK

在官网下载jdk1.7 x64

解压#tar zvxf jdk-7u10-linux-x64.tar.gz

   #mv jdk1.7.0_10 /usr/java/jdk1.7

配置环境变量,执行 cd /etc命令后执行 vi profile,在行末尾添加

export JAVA_HOME=/usr/java/jdk1.7export

CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

export PATH=$PATH :$JAVA_HOME/bin:

 执行 chmod +x profile将其变成可执行文件
 
执行 source profile使其配置立即生效
#source /etc/profile
 
执行 java -version查看是否安装成功

这个步骤所有机器都必须安装


4)、修改主机名

修改主机名,所有节点均一样配置
     1
连接到主节点192.168.216.131,修改 network执行 vim /etc/sysconfig/network,修改 HOSTNAME=hadoop1
      2
,修改 hosts文件,执行 cd /etc命令后执行 vi hosts,在行末尾添加 :

192.168.216.131 hadoop1
192.168.216.132 hadoop2
192.168.216.133 hadoop3
192.168.216.134 hadoop4

    3 执行 hostname hadoop1
    4
执行 exit后重新连接可看到主机名以修改 OK

其他节点也修改主机名后添加 Host,或者 host文件可以在后面执行 scp覆盖操作


5)、配置SSH无密码登陆

SSH 无密码原理简介 :
首先在 hadoop1上生成一个密钥对,包括一个公钥和一个私钥,并将公钥复制到所有的slave(hadoop2-hadoop4)上。
然后当 master SSH连接 slave时, slave 就会生成一个随机数并用 master的公钥对随机数进行加密,并发送给 master
最后 master 收到加密数之后再用私钥解密,并将解密数回传给 slave slave认解密数无误之后就允许 master输入密码进行连接了

2 ,具体步骤(在root用户和hadoop用户登陆情况下执行)
1
执行命令 ssh-keygen -t rsa之后一路回车,查看刚生成的无密码钥对: cd .ssh执行 ll
2
、把 id_rsa.pub追加到授权的 key里面去。执行命令 cat ~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys
3
、修改权限:执行 chmod 600 ~/.ssh/authorized_keys
4
、确保 cat/etc/ssh/sshd_config中存在如下内容

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
如需修改,则在修改后执行重启 SSH务命令使其生效 :service sshd restart

  将公钥复制到所有的 slave机器上 :scp~/.ssh/id_rsa.pub192.168.216.133 ~/   然后输入 yes,最后输入 slave机器的密码;
slave机器上创建 .ssh文件夹 :mkdir ~/.ssh然后执行 chmod 700 ~/.ssh(若文件夹以存在则不需要创建);
追加到授权文件 authorized_keys执行命令 :cat ~/id_rsa.pub >>~/.ssh/authorized_keys然后执行 chmod 600 ~/.ssh/authorized_keys
重复第 4
验证命令 : master 机器上执行 ssh 192.168.216.133发现主机名由 hadoop1变成 hadoop3 即成功,

最后删除 id_rsa.pub文件 :rm -r id_rsa.pub(这步不是必须,子要不和本机的公钥文件冲突就行)
按照以上步骤分别配置 hadoop1,hadoop2,hadoop3,hadoop4,要求每个都可以无密码登录

6)源码下载

         HADOOP 版本
最新版本 hadoop-2.0.0-alpha安装包 hadoop-2.0.0-alpha.tar.gz
载官网地址 :http://www.apache.org/dyn/closer.cgi/hadoop/common/
/usr/local目录下解压目录
tar zxvf hadoop-2.0.0-alpha.tar.gz

mv hadoop-2.0.0-alpha hadoop


源码配置修改

/etc/profile

配置环境变量: vim /etc/profile
添加
export HADOOP_DEV_HOME=/usr/local/hadoop      #hadoop 安装目录
export PATH=$PATH:$HADOOP_DEV_HOME/bin       
export PATH=$PATH:$HADOOP_DEV_HOME/sbin
export HADOOP_MAPARED_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=${HADOOP_DEV_HOME}/etc/hadoop
export HDFS_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop

7)配置文件
配置hadoop-env.sh

vim /usr/hadoop/hadoop-2.0.0-alpha/etc/hadoop/hadoop-env.sh
在末尾添加 exportJAVA_HOME=/usr/java/jdk1.7

core-site.xml

configuration节点里面添加属性

<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs:// 192.168.216.131:9000</value>
</property>


slave
配置

vim /home/hadoop/hadoop/etc/hadoop/slaves
添加 slave IP
192.168.216.131
192.168.216.132
192.168.216.133


配置hdfs-site.xml

vim /home/hadoop/hadoop/etc/hadoop/hdfs-site.xml
添加节点

<property>
<name>dfs.replication</name>
<value>3</value>
</property>

<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop/hdfs/name</value>
<final>true</final>
</property>

<property>
<name>dfs.federation.nameservice.id</name>
<value>ns1</value>
</property>

<property>
<name>dfs.namenode.backup.address.ns1</name>
<value>192.168.216.131:50100</value>
</property>

<property>
<name>dfs.namenode.backup.http-address.ns1</name>
<value>192.168.216.131:50105</value>
</property>

<property>
<name>dfs.federation.nameservices</name>
<value>ns1</value>
</property>

<property>
<name>dfs.namenode.rpc-address.ns1</name>
<value>192.168.216.131:9000</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns2</name>
<value>192.168.216.131:9000</value>
</property>

<property>
<name>dfs.namenode.http-address.ns1</name>
<value>192.168.216.131:23001</value>
</property>

<property>
<name>dfs.namenode.http-address.ns2</name>
<value>192.168.216.131:13001</value>
</property>

<property>
<name>dfs.dataname.data.dir</name>
<value>file:/hadoop/hdfs/data</value>
<final>true</final>
</property>

<property>
<name>dfs.namenode.secondary.http-address.ns1</name>
<value>192.168.216.131:23002</value>
</property>

<property>
<name>dfs.namenode.secondary.http-address.ns2</name>
<value>192.168.216.131:23002</value>
</property>

<property>
<name>dfs.namenode.secondary.http-address.ns1</name>
<value>192.168.216.131:23003</value>
</property>

<property>
<name>dfs.namenode.secondary.http-address.ns2</name>
<value>192.168.216.131:23003</value>
</property>


配置yarn-site.xml

添加节点

<property>
<name>yarn.resourcemanager.address</name>
<value>192.168.216.131:18040</value>
</property>

<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>192.168.216.131:18030</value>
</property>

<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.216.131:18088</value>
</property>

<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>192.168.216.131:18025</value>
</property>

<property>
<name>yarn.resourcemanager.admin.address</name>
<value>192.168.216.131:18141</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>

在 /etc/hadoop 使用以下内容创建一个文件mapred-site.xml

<property>

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

<value>yarn</value>

</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>


配置httpfs-site.xml

添加 httpfs选项
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>192.168.216.131</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>

 

同步代码到其他机器

1.同步配置代
先在 slaves 的机器上也
mkdir -p /usr/local
部署hadoop然后只要同步修改etc/hadoop下的配置文件即可  例如:hadoop1# scp –r hadoop root@hadoop2:/usr/local/
2.
同步 /etc/profile
3.
同步 /etc/hosts
#scp -r /etc/profile root@hadoop2:/etc/profile
#scp -r /etc/hosts root@hadoop2:/etc/hosts

其他机器以此操作


8)Hadoop
启动

格式化集群

hadoop namenode -format -clusterid clustername

hsfs namenode-format

启动hdfs执行:
start-dfs.sh

hadoop dfs ;
启动Yarn

yarn源管理服:
start-yarn.sh;

启动httpfs

httpfs
httpfs.sh start
使得对外可以提高 httprestful接口服


9)测试

安装结果验证

验证hdfs

在各台机器执行 jps进程是否都已经启动

[root@hadoop1 hadoop]# jps
7396 NameNode
24834 Bootstrap
7594 SecondaryNameNode
7681 ResourceManager
32261 Jps

[root@hadoop2 ~]# jps
8966 Jps
31822 DataNode
31935 NodeManager

进程启动正常

验证是否可以登
hadoop fs -ls hdfs:// 192.168.216.131:9000/
hadoop fs -mkdir hdfs:/ 192.168.216.131:9000/testfolder
hadoop fs -copyFromLocal ./xxxx hdfs:// 192.168.216.131:9000/testfolder
hadoop fs -ls hdfs:// 192.168.216.131:9000/testfolder

看以上执行是否正常


验证map/reduce

未完待续.....

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值