Hadoop完全分布式模式的配置与安装
接下来有可能会用到Hadoop相关的知识, 所以这几天就在Vmware里面尝试着搭建了一下. 感觉还行. 所以趁着还记得, 就写下这篇博客, 帮助自己以后回顾, 也帮助那些准备接触Hadoop的童鞋. 因为这也是自己第一次搭建Hadoop.
首先, 我们需要3台机器, 这里我是在Vmware里面创建了3台虚拟机, 来保证我的Hadoop完全分布式的最基本配置.我这里选择的CentOS, 因为RedHat系列,在企业中比较的受欢迎.安装好后,最后的环境信息:
IP地址
h1: 192.168.230.133 h2: 192.168.230.160 h3: 192.168.230.161
这里遇见到一个小疑问, 就是修改机器的主机名字.
vim /etc/sysconfig/network
然后重启电脑就OK了. 最基础的环境已经有了, 就是3台机器.
其实,搭建Hadoop的也是不很麻烦,我们来整体的看一下需要哪几个步骤?
- 配置hosts
- 建立hadoop运行账号
- 配置ssh免密码连入
- 下载并解压hadoop安装包
- 配置namenode, 修改site文件
- 配置hadoop-env.sh
- 配置master和是slave文件
- 向各节点复制hadoop
- 格式化namenode
- 启动hadoop
- 用jps检验各后台进程是否成功启动
我们一步步的来细分, 也许中间有错误或者不足的地方,希望高手们指正. 因为我这里也是初学中,欢迎拍砖.
配置hosts
我们需要在3台机器上面都碰上host,用一个主机名字来代替一串IP地址,世界一下子就清净了.
sudo vim /etc/hosts 192.168.230.133 h1 192.168.230.160 h2 192.168.230.161 h3
建立hadoop运行账号
在这里有人可能觉得不专业了, 因为我想把Hadoop安装在hadoop用户目录下面, 其实当然最好的方法还是安装公用的目录,比如:/usr/local. 我这里只是测试性的, 之后的Hadoop就安装在hadoop用户下了.
sudo groupadd hadoop sudo useradd -s /bin/bash -d /home/hadoop -m hadoop -g hadoop sudo passwd hadoop
这里解释一下3条命令的含义:
- 建立一个hadoop的组
- 添加一个hadoop的用户, 并且在home下面创建hadoop的用户目录, 并添加到hadoop组里
- 为hadoop设置密码
配置ssh免密码连入
这步也算重要, 一般在很多机器中, 相同用户之间能够相互免密码访问,在效率上是一件很好的事情,特别是N多机器集群的时候,你想,一个脚本就把所有的事请干完了,多爽.
这里之前运维跟我分享了一个免密码的规则. 大概是这样子的:
线下环境 -->跳板机 --> 生产环境, 这每一个最好还是需要输入密码, 因为这是为了安全起见,然后在每一层相同的用户免密码登入是没问题的, 确实是这样子的一个模式.
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
分析一下: 1. 生成一个公钥,私钥
2. 将公钥放入到authorized_keys中去
这里有个问题, 就是需要将其权限修改到600才行
[hadoop@h1 .ssh]$ chown 600 authorized_keys
h1
ssh-copy-id -i ~/.ssh/id_dsa.pub hadoop@h2 ssh-copy-id -i ~/.ssh/id_dsa.pub hadoop@h3
h2
ssh-copy-id -i ~/.ssh/id_dsa.pub hadoop@h1 ssh-copy-id -i ~/.ssh/id_dsa.pub hadoop@h3
h3
ssh-copy-id -i ~/.ssh/id_dsa.pub hadoop@h1 ssh-copy-id -i ~/.ssh/id_dsa.pub hadoop@h2
下载并解压hadoop安装包
这次是下载的最新版的: http://mirrors.cnnic.cn/apache/hadoop/common/current/ 2.7.0
我们在h1上配置好所有的需要配置好的参数, 最后全部复制到h2,h3中去.
Hadoop v2.7.0的配置文件在/home/hadoop/hadoop/etc/hadoop下面, 我们需要一个个的去配置:
[hadoop@h1 hadoop]$ vim core-site.xml <configuration> <property> <name>fs.default.name</name> <value>hdfs://h1:9000</value> <final>true</final> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/hadoop/tmp</value> <description>A bas for other temporary directories</description> </property> </configuration>
然后:
[hadoop@h1 hadoop]$ vim hadoop-env.sh export JAVA_HOME=/opt/java/jdk1.7.0_55
这里如果不知道JAVA_HOME不知道在哪儿? 就在terminal中直接敲echo $JAVA_HOME就看见了.
再然后:
[hadoop@h1 hadoop]$ vim hdfs-site.xml <configuration> <property> <name>dfs.name.dir</name> <value>/home/hadoop/hdfs/name</value> </property> <property> <name>dfs.data.dir</name> <value>/home/hadoop/hdfs/data</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
再然后:
[hadoop@h1 hadoop]$ vim mapred-site.xml <configuration> <property> <name>mapred.job.tracker</name> <value>h1:9001</value> <final>true</final> </property> </configuration>
再然后:
[hadoop@h1 hadoop]$ touch masters vim masters 配置进去 h1
再然后:
[hadoop@h1 hadoop]$ vim slaves 配置进入 h2 h3
向各节点复制hadoop
[hadoop@h1 ~]$ scp -r hadoop h2:~ [hadoop@h1 ~]$ scp -r hadoop h3:~
还需要在3台寄去上配置系统变量
[hadoop@h1 hadoop]$ vim /etc/profile export HADOOP_INSTALL=/home/hadoop/hadoop export PATH=$PATH:$HADOOP_INSTALL/bin export HADOOP_COMMON_LIB_NATIVE_DIR="/home/hadoop/hadoop/lib/native" export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=/home/hadoop/hadoop/lib" 最后需要 source /etc/profile
好了, 这样子就起来了.
最后利用jps命令, 就可以看见Hadoop相关的程序都已经起来了.
hadoop有很多的管理后台可以看:
比如:
http://192.168.230.133:50070/dfshealth.html#tab-overview
差不多了, 接下来会继续记录更多有关Hadoop相关的Blogs.
来自:http://www.cyblogs.com/hadoopwan-quan-fen-bu-shi-mo-shi-de-pei-zhi-yu-an-zhuang/