码迷,mamicode.com
首页 > 编程语言 > 详细

Python菜鸟的Hadoop实战——Hadoop集群搭建

时间:2015-06-11 23:10:51      阅读:548      评论:0      收藏:0      [点我收藏+]

标签:hadoop 分布式部署 阿里云服务器


Hadoop集群的部署


        网上很多关于hadoop集群部署的文章, 我这里重新整理下,毕竟,别人的经历,让你按照着完整走下来,总有或多或少的问题。

小技巧分享:

        有些初学者喜欢在自己机器上安装虚拟机来部署hadoop,毕竟,很多同学的学习环境都是比较受限的。技术分享

        我这里则直接选择了阿里云的机器,买了三台ECS作为学习环境。毕竟,最低配一个月才40多块,学习还是要稍微投入点的。技术分享


一、 基础环境准备

Windows不熟练,小主只有选择Linux了。

官方提示如下,Linux所需软件包括:

  1. JavaTM1.5.x,必须安装,建议选择Sun公司发行的Java版本。

  2. ssh 必须安装并且保证 sshd一直运行,以便用Hadoop 脚本管理远端Hadoop守护进程。

  3. rsync也是需要安装的。


so, 首先选择买几台Linux服务器,然后去准备基础环境。

  1. 阿里云官网www.aliyun.com, 注册一个账号,很便捷,支持支付宝付款。这年头,如果没有支付宝,就真的奥特曼了。

  2. 购买一台ECS(当然,最便宜的一种),选择的是aliyun redhat 5.7 64.(哦,不是要买三台吗?不急,后面可以展示下云计算的威力,花点小钱,节约大把时间,何乐不为呢?)

  3. 检查这个机器的基础环境:

[hadoop@iZ94cjwg86gZ ~]$ uname -a
Linux iZ94cjwg86gZ 2.6.32-220.23.2.al.ali1.1.alios6.x86_64 #1 SMP Sun Jan 4 15:01:53 CST 2015 x86_64 x86_64 x86_64 GNU/Linux

[hadoop@iZ94cjwg86gZ ~]$ java -version
java version "1.6.0_22"
OpenJDK Runtime Environment (IcedTea6 1.10.4) (rhel-1.41.1.10.4.5.alios6-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)

[hadoop@iZ94cjwg86gZ ~]$ python --version
Python 2.6.6
[hadoop@iZ94cjwg86gZ ~]$
Hey, 兄弟,真不赖,什么Java/Python安装起来也不轻松。不用操心,太好了。


检查下, Java中的JPS工具是否有,后面会依赖这个工具。这个时候,你会纳闷,咦,怎么检查呢,Java目录在哪里呢?
这个时候,你会发现两个命令可以帮你,一个是find, 当然,另外一个就是rpm。这里就不介绍这些命令了。(如果有问题,大家搜索下就了解了)
rpm -qa|grep java
[hadoop@iZ94cjwg86gZ ~]$ rpm -qa|grep java
libvirt-java-0.4.7-1.3.alios6.noarch
java-1.6.0-openjdk-devel-1.6.0.0-1.41.1.10.4.5.alios6.x86_64
libvirt-java-devel-0.4.7-1.3.alios6.noarch
tzdata-java-2011l-4.4.alios6.noarch
java-1.6.0-openjdk-1.6.0.0-1.41.1.10.4.5.alios6.x86_64

[hadoop@iZ94cjwg86gZ ~]$ rpm -ql java-1.6.0-openjdk-1.6.0.0-1.41.1.10.4.5.alios6.x86_64|grep bin
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/java
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/keytool
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/orbd
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/pack200
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/policytool
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/rmid
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/rmiregistry
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/servertool
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/tnameserv
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/unpack200
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/libinstrument.so
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/zi/Asia/Harbin



哦, maybe  /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/就是java的主目录啦~~~~~~~~~

[hadoop@iZ94cjwg86gZ bin]$ pwd
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/bin
[hadoop@iZ94cjwg86gZ bin]$ ls jps
jps
[hadoop@iZ94cjwg86gZ bin]$

[hadoop@iZ94cjwg86gZ bin]$ rpm -qa|grep rsync
rsync-3.0.6-5.4.alios6.1.x86_64
[hadoop@iZ94cjwg86gZ bin]$

Fortunately,  Java环境, Python环境, rsync 都是ok的。
另外,就是集群管理,毫无疑问, PSSH需要有一个的,不然, 一台机器一台机器操作, 没有人愿意。

安装setuptools,即easy_install。
wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz#md5=7df2a529a074f613b509fb44feefe74e 
tar zxf setuptools-0.6c11.tar.gz
cd setuptools-0.6c11 & python setup.py install 

然后, easy_install pssh, 就这样,基础工具就这样准备好啦。

    


二、系统环境准备


  1. 权限问题

我们尽量要规避Hadoop的root操作权限,因此,我们需要新建一个用户:hadoop。

useradd hadoop
password hadoop 
比较重要的就是:hadoop的sudo权限
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
hadoop   ALL=(ALL)  NOPASSWD: ALL
如果你想设置只有某些命令可以sudo的话,hadoop   ALL= (root) NOPASSWD: /sbin/mount, (root) NOPASSWD: /bin/umount, (root) NOPASSWD: /mnt/mount, (root) NOPASSWD: /bin/rm, (root) NOPASSWD: /usr/bin/make, (root) NOPASSWD: /bin/ln, (root) NOPASSWD: /bin/sh, (root) NOPASSWD: /bin/mv, (root) NOPASSWD: /bin/chown, (root) NOPASSWD: /bin/chgrp, (root) NOPASSWD: /bin/cp, (root) NOPASSWD: /bin/chmod

然后,hadoop账号的下日常工具也要能用才行,~/.bash_profile文件需要增加一些内容。
PATH=$PATH:$HOME/bin
PATH=$PATH:$HOME/bin:/sbin:/usr/sbin/:/usr/bin:/usr/local/bin:/usr/local/python27/bin/:/home/hadoop/hadoop-2.6.0/bin
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/
export JAR_HOME=$JAVA_HOME/jre/
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAR_HOME/lib
export HADOOP_HOME=/home/hadoop/hadoop-2.6.0
PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

添加完毕后,sourece ~/.bash_profile即可。



三、准备单台Hadoop环境

Maybe, 你可以专门准备一个Hadoop目录,比如, /home/hadoop就是你的主目录。

su - hadoop

下载hadoop 2.6.0:
cd /home/hadoop/
wget http://mirrors.hust.edu.cn/apache/hadoop/core/stable2/hadoop-2.6.0.tar.gz

tar -xzvf hadoop-2.6.0.tar.gz

修改配置文件:
cd /home/hadoop/hadoop-2.6.0/etc/hadoop

hadoop-env.sh

# The java implementation to use.
export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/

yarn-env.sh
[hadoop@iZ94cjwg86gZ hadoop]$ cat yarn-env.sh |grep -i java

# some Java parameters
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64

hdfs-site.xml
<configuration>
 <property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>iZ94cjwg86gZ:9001</value>
 </property>

  <property>
   <name>dfs.namenode.name.dir</name>
   <value>file:/home/hadoop/hadoop-2.6.0/dfs/name</value>
 </property>

 <property>
  <name>dfs.datanode.data.dir</name>
  <value>file:/home/hadoop/hadoop-2.6.0/dfs/data</value>
  </property>

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

 <property>
  <name>dfs.webhdfs.enabled</name>
  <value>true</value>
 </property>

</configuration>

mapred-site.xml
[hadoop@iZ94cjwg86gZ hadoop]$ cat mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->
<configuration>
  <property>
   <name>mapreduce.framework.name</name>
   <value>yarn</value>
 </property>
</configuration>


     也许,你想知道这些配置项的意思。 ok, 我的回答是:管他呢!(其实,我也不知道,没有关系,慢慢来吧)

ok, 就这样,我们的第一台机器就准备好了。



四、准备Hadoop集群环境


        剩下的,就是靠云计算的便捷了;

        阿里云ECS可以通过打快照的方式,将我们刚才做的工作做成自定义镜像,无需在其他机器上重复做了。How amazing!!!

        我们进入下一个环节,集群环境准备:

        首先,我利用这个新制作的镜像,重新购买了两台机器。然后,分别进入后,发现,god, 确实啥都有了!!kickstart装机系统可以out了。科技改变生活。

        ok, Anyway, Now, 我们拥有了三台ECS。一个月大概100块吧。这年头,买个苹果都要2块,当然,如果是个苹果手表呢,100块体验云计算多划算~~~~


这块明天接着弄把~~~~~今天洗洗休息了。

      
















本文出自 “专注IT打杂30年” 博客,谢绝转载!

Python菜鸟的Hadoop实战——Hadoop集群搭建

标签:hadoop 分布式部署 阿里云服务器

原文地址:http://wenchang.blog.51cto.com/3047136/1660944

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!