博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多机集群环境搭建hadoop笔记
阅读量:6705 次
发布时间:2019-06-25

本文共 4288 字,大约阅读时间需要 14 分钟。

hot3.png

经过一天半的努力,终于在多机集群环境下搭建好了hadoop,成功地运行了wordcount示例程序。学习和体会了hadoop的map reduce模型和hdfs分布式文件系统。

我使用的liunx系统是red hat enterprise Linux 5,jdk 版本是:1.6.0_26,hadoop版本是:0.21.0, 注意此版本的hadoop需要1.6版本的jdk,否则会导致hadoop无法运行。
步骤一:安装java
1)、下载Linux版的java。
将其解压后放在任意一个目录下,我放在 /usr/java目录下;
2)、设置jJAVA_HOME环境变量。
我是通过修改配置文件实现的,需要root用户修改/etc/profile文件,在文件最后加上如下三行:
export JAVA_HOME=/usr/java/jdk1.6.0_26
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar
需要重新启动系统,这样就生效了,
3)、验证java安装
[root@node1 etc]# java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode)
[root@node1 etc]#
如上所示,表示安装成功。
注意:每台机器都要安装java。
步骤二:多机集群ssh配置
我的集群只有三台机器,将其取名为:node1, node2, node3。从map reduce计算的角度讲,node1作为master节点,node2和node3作为slave节点。从hdfs数据存储角度讲,node1作为namenode节点,node2和node3作为datanode节点。
1)、修改/etc/hosts文件
node1如下:
115.25.33.39 node1 node1
115.25.33.52 node2 node2
115.25.33.49 node3 node3
注意:上面的ip地址为每台机器当前实际分配的ip地址,所以不能照抄。Linux中查看本机ip地址的命令为:ifconfig
node2如下:
115.25.33.39 node1 node1
115.25.33.49 node3 node3
node3如下:
115.25.33.39 node1 node1
115.25.33.52 node2 node2
2)、配置从node1无需输入密码ssh登录node1、node2和node3
所有节点的用户名相同,本人统一为:andychen
在node1上配置无密码公钥认证过程如下:

[andychen@node1 ~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/andychen/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/andychen/.ssh/id_rsa. Your public key has been saved in /home/andychen/.ssh/id_rsa.pub. The key fingerprint is: 2e:57:e2:bf:fd:d4:45:5c:a7:51:3d:f1:51:3c:69:68 root@krusty04
这个命令将为node1 上的当前用户 andychen 生成其密钥对,密钥对的保存路径使用缺省的 /home/andychen/.ssh/id_rsa, 要求输入 passphrase 的时候,直接回车。这样生成的证书以及公钥将存储在 /home/andychen/.ssh 目录,形成两个文件 id_rsa,id_rsa.pub。然后将 id_rsa.pub 文件的内容复制到每一台机器(包括本机 node1)的  /home/andychen/.ssh/authorized_keys 文件的尾部,如果机器上不存在  /home/andychen/.ssh/authorized_keys 文件,可以自行创建一个。请注意 id_rsa.pub 文件的内容是长长的一行,复制时需注意,不要遗漏字符或混入了多余换行符。 

接下来可以做一下 SSH 连接测试,从 node1分别向 node1, node2, node3发起 SSH 连接请求,确保不需要输入密码就能 SSH 连接成功。 注意第一次 SSH 连接时会出现如下提示信息:

The authenticity of host [node1] can't be established. The key fingerprint is: 74:32:91:f2:9c:dc:2e:80:48:73:d4:53:ab:e4:d3:1a Are you sure you want to continue connecting (yes/no)?

请输入 yes, 这样 OpenSSH 会把连接过来的这台主机的信息自动加到 /home/andychen/.ssh/know_hosts 文件中去,第二次再连接时,就不会有这样的提示信息了。

步骤三:安装hadoop
将hadoop-0.21.0.tar.gz解压到andychen用户目录下, 修改其中的conf/hadoop-env.sh文件, 这里主要配置JAVA_HOME环境变量。
在其中设置 JAVA_HOME 环境变量:export JAVA_HOME=”/usr/java/jdk1.6.0_26” 
配置hadoop:
1、core-site.xml文件配置如下:
         <property>
                <name>fs.default.name</name>
                <value>hdfs://node1:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/tmp/hadoop/hadoop-${user.name}</value>
        </property>
2、hdfs-site.xml文件配置如下:
        <property>
                <name>dfs.name.dir</name>
                <value>/home/andychen/name</value>
        </property>
        <property>
                <name>dfs.data.dir</name>
                <value>/home/andychen/data</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
其中dfs.name.dir配置namenode节点的目录,dfs.data.dir配置datanode节点的目录。
3、mapred-site.xml文件配置如下:
        <property>
                <name>mapred.job.tracker</name>
                <value>node1:9001</value>
        </property>
配置jobtracker
4、masters文件配置如下:
node1
5、slaves文件配置如下:
node2
node3
完成hadoop的配置之后,将其拷贝到node2和node3的andychen目录中。通过scp命令拷贝。
步骤四:使用hadoop
1、格式化一个分布式文件系统。
在node1节点,进入hadoop根目录,执行如下命令:
bin/hadoop namenode -format
2、启动hadoop。
执行如下命令:
bin/start-all.sh
这样在node1节点用 jps命令可以看到如下三个进程:
namenode、secondary namenode、jobtracker
在node2和node3用 jps命令看到如下两个进程:
datanode和tasktracker
3、拷贝测试数据到hdfs中
首先建立一个test-in目录,将英文文本文件存入其中,可以是多个文本文件。
然后执行如下命令:
bin/hadoop fs -put test-in input
将test-in目录中的文件put到hdfs中的input目录中。
4、执行wordcount例子程序
bin/hadoop jar hadoop-mapred-examples-0.21.0.jar input output
其中hdfs中的input目录中的文件作为程序的输入,计算结果存入在output目录中。
5、查看执行结果
bin/hadoop fs -get output test-out
将hdfs中的output目录拷贝到本地文件系统的test-out目录中。
进入test-out目录,查看part-r-00000 文件即可。
5、补充:hdfs文件系统操作的有用命令:
bin/hadoop fs -ls /
查看hdfs的跟目录
bin/hadoop fs -cat /user/andychen/output/part-r-00000
查看执行结果
bin/hadoop fs -rm /user/andychen/input/file1.txt
删除file1.txt文件
bin/hadoop fs -rmr /user/andychen/input
删除input目录

原文: http://cyibeike.blog.163.com/blog/static/211125782011619105656911/

转载于:https://my.oschina.net/u/250130/blog/124803

你可能感兴趣的文章
How to check Ubuntu version
查看>>
JS对表格排序(支持对序号,数字,字母,日期)
查看>>
Vue2 第三天学习
查看>>
php 解析xml 的四种方法(转)
查看>>
qt 试用 (3)配置编译源代码及调试
查看>>
(转)用CSS3移除点击交互元素的高亮背景
查看>>
遍历json获得数据的几种方法
查看>>
php Collection类的设计
查看>>
c++中的计时器代码
查看>>
语义Web和本体开发相关技术
查看>>
Mysql集群读写分离(Amoeba)
查看>>
Quest for sane signals in Qt - step 1 (hand coding a Q_OBJECT)
查看>>
SpringBoot的注解:@SpringBootApplication注解 vs @EnableAutoConfiguration+@ComponentScan+@Configuration...
查看>>
MVVM模式之:ViewModel Factory与注入
查看>>
SQL Server性能调优之执行计划深度剖析 第一节 浅析SQL执行的过程
查看>>
Adhesive框架系列文章--报警服务模块使用和实现
查看>>
利用自定义IHttpModule来实现URL地址重写
查看>>
在网页上嵌入 PowerPoint 演示文稿
查看>>
javascript日期格式化函数,跟C#中的使用方法类似
查看>>
CURL基于cookie的自动登录脚本
查看>>