大数据测试之hadoop集群配置和测试

时间:2023-02-22 09:03:37

大数据测试之hadoop集群配置和测试

 

一、准备(所有节点都需要做):
系统:Ubuntu12.04
java版本:JDK1.7
SSH(ubuntu自带)
三台在同一ip段的机器,设置为静态IP
机器分配:一台master,两台slave

主机信息是(hosts文件添加如下信息):
192.168.88.123 h1
192.168.88.124 h2
192.168.88.125 h3
其中第一项是内网IP ,第二项是主机名

各节点作用:
h1:NameNode、JobTracker
h2:DataNode、TaskTracker
h3:DataNode、TaskTracker

a.安装SSH:
sudo apt-get install ssh
测试:ssh localhost
输入当前用户的密码回车 没异常说明安装成功
b.开启SSHD服务:
安装:sudo apt-get install openssh-server
确认是否启动:
ps -e | grep ssh
找到到sshd,有即启动了。
c.创建Hadoop用户(名为grid)
adduser grid

二、配置Hadoop
  1.无密码登陆
  在Hadoop启动以后,Namenode是通过SSH(Secure Shell)来启动和停止各个datanode上的各种守护进程的,这就须要在节点之间执行指令的时候是不须要输入密码的形式,故我们须要配置SSH运用无密码公钥认证的形式。
 首先设置namenode的ssh为无需密码的、自动登陆。
  换切到grid用户
  su grid
  cd
  ssh-keygen -t rsa
  完成后会在grid目录产生隐藏文件.ssh,通过ls查看,然后
  cp id_rsa.pub authorized_keys
  测试
  ssh h1
  第一次会提示确认继续连接,打yes,这会把该服务器添加到你的已知主机列表中
  同样在h2,h3上做以上操作
  最后,如何使各个节点相互访问不需要密码,将三个节点的authorized_keys文件里面的内容合成一个文件然后替换掉原来的,替换完毕后可以用 
  ssh XX(XX为主机名)
  相互测试是否连接成功。

  2.配置Hadoop文件:
在hadoop/conf目录下修改文件有hadoop-env.sh,core-site.xml,hdfs-site.xml,mapred-site.xml,master,slaves
hadoop-env.sh
修改JAVA_HOME路径
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_45
记得去掉前面的#
core-site.xml:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://h1:49000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/grid/var</value>
</property>
</configuration>

1)fs.default.name是NameNode的URI。hdfs://主机名:端口/
2)hadoop.tmp.dir :Hadoop的默认临时路径,这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。

hdfs-site.xml:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/grid/name1,/home/grid/name2</value> 
<description> </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/grid/data1,/home/grid/data2</value>
<description> </description>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
1) dfs.name.dir是NameNode持久存储名字空间及事务日志的本地文件系统路径。 当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。
2) dfs.data.dir是DataNode存放块数据的本地文件系统路径,逗号分割的列表。 当这个值是逗号分割的目录列表时,数据将被存储在所有目录下,通常分布在不同设备上。
3)dfs.replication是数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错。

注意:此处的name1、name2、data1、data2目录不能预先创建,hadoop格式化时会自动创建,如果预先创建反而会有问题。

mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>h1:49001</value> 
</property>
<property>
<name>mapred.local.dir</name>
<value>/home/grid/var</value>
</property>
</configuration>
1)mapred.job.tracker是JobTracker的主机(或者IP)和端口。主机:端口。

配置masters和slaves主从结点
master

slaves
h2
h3

配置完毕,把配置好的hadoop文件夹拷贝到其他集群的机器上,并保证其他机器的JDK 安装路径一致(如果不一致就另外再修改配置文件conf/hadoop-env.sh憋)

scp -r /home/grid/hadoop-0.20.2 grid@h2:/home/grid

scp -r /home/grid/hadoop-0.20.2 grid@h2:/home/grid
三、启动Hadoop

1、先格式化一个新的分布式文件系统

cd

bin/hadoop namenode -format

成功后系统输出:

INFO common.Storage: Storagedirectory /opt/hadoop/hadoopfs/name2 has been successfully formatted.

这一行,看到successfully单词木有,格式化成功。

执行完后可以到master机器上看到/home/hadoop//name1和/home/hadoop//name2两个目录。

2.启动所有节点

在主节点master上面启动hadoop,主节点会启动所有从节点的hadoop。

cd

bin/start-all.sh(同时启动HDFS和Map/Reduce)

输出:

grid@h1:~/hadoop-0.20.2$ bin/start-all.sh
starting namenode, logging to /home/grid/hadoop-0.20.2/bin/../logs/hadoop-grid-namenode-h1.out
h2: starting datanode, logging to /home/grid/hadoop-0.20.2/bin/../logs/hadoop-grid-datanode-h2.out
h3: starting datanode, logging to /home/grid/hadoop-0.20.2/bin/../logs/hadoop-grid-datanode-h3.out
h1: starting secondarynamenode, logging to /home/grid/hadoop-0.20.2/bin/../logs/hadoop-grid-secondarynamenode-h1.out
starting jobtracker, logging to /home/grid/hadoop-0.20.2/bin/../logs/hadoop-grid-jobtracker-h1.out
h2: starting tasktracker, logging to /home/grid/hadoop-0.20.2/bin/../logs/hadoop-grid-tasktracker-h2.out
h3: starting tasktracker, logging to /home/grid/hadoop-0.20.2/bin/../logs/hadoop-grid-tasktracker-h3.out
没有出现什么Error或Warming之类的就表示运行成功了

运行成功后看看程序是否正常

/usr/lib/jvm/jdk1.7.0_45/bin//jps

可以看到在h1结点上有进程

2928 NameNode
3319 Jps
3105 SecondaryNameNode
3184 JobTracker

很熟悉的字眼我就不多说了,在slaves结点上也检测下是否正常,会有

TaskTracker,DataNode

若没缺少以上进程即配置有问题。

四、测试

建一个目录,里面建两个txt文件,用hadoop项目现有的hadoop-0.20.2-examples.jar例子测试txt里面单词的出现次数。

cd

mkdir input

cd input

echo "hello world" > test1.txt

echo "hello hadoop" > test2.txt

建完文件后,将文件放到HDFS系统的in目录上

cd ../hadoop-0.20.2

bin/hadoop dfs -put ../input in

测试了,运行

bin/hadoop jar hadoop-0.20.2-examples.jar wordcount in out

会出现一系列的运行信息
grid@h1:~/hadoop-0.20.2$ bin/hadoop jar hadoop-0.20.2-examples.jar wordcount in out
14/10/12 14:04:05 INFO input.FileInputFormat: Total input paths to process : 2
14/10/12 14:04:06 INFO mapred.JobClient: Running job: job_201312261337_0006
14/10/12 14:04:07 INFO mapred.JobClient: map 0% reduce 0%
14/10/12 14:04:14 INFO mapred.JobClient: map 50% reduce 0%
14/10/12 14:04:15 INFO mapred.JobClient: map 100% reduce 0%
14/10/12 14:04:23 INFO mapred.JobClient: map 100% reduce 100%
14/10/12 14:04:25 INFO mapred.JobClient: Job complete: job_201312261337_0006
14/10/12 14:04:25 INFO mapred.JobClient: Counters: 17
14/10/12 14:04:25 INFO mapred.JobClient: Job Counters 
14/10/12 14:04:25 INFO mapred.JobClient: Launched reduce tasks=1
14/10/12 14:04:25 INFO mapred.JobClient: Launched map tasks=2
14/10/12 14:04:25 INFO mapred.JobClient: Data-local map tasks=2
14/10/12 14:04:25 INFO mapred.JobClient: FileSystemCounters
14/10/12 14:04:25 INFO mapred.JobClient: FILE_BYTES_READ=55
14/10/12 14:04:25 INFO mapred.JobClient: HDFS_BYTES_READ=25
14/10/12 14:04:25 INFO mapred.JobClient: FILE_BYTES_WRITTEN=180
14/10/12 14:04:25 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=25
14/10/12 14:04:25 INFO mapred.JobClient: Map-Reduce Framework
14/10/12 14:04:25 INFO mapred.JobClient: Reduce input groups=3
14/10/12 14:04:25 INFO mapred.JobClient: Combine output records=4
14/10/12 14:04:25 INFO mapred.JobClient: Map input records=2
14/10/12 14:04:25 INFO mapred.JobClient: Reduce shuffle bytes=61
14/10/12 14:04:25 INFO mapred.JobClient: Reduce output records=3
14/10/12 14:04:25 INFO mapred.JobClient: Spilled Records=8
14/10/12 14:04:25 INFO mapred.JobClient: Map output bytes=41
14/10/12 14:04:25 INFO mapred.JobClient: Combine input records=4
14/10/12 14:04:25 INFO mapred.JobClient: Map output records=4
14/10/12 14:04:25 INFO mapred.JobClient: Reduce input records=4

没有什么Error或Warming之类的字眼特别是有
map 100% reduce 100%
表示成功运行了,结果可一输入

bin/hadoop dfs -cat out/*

看到结果

hadoop 1
hello 2
world 1

大数据测试之hadoop集群配置和测试的更多相关文章

  1. 大数据中Hadoop集群搭建与配置

    前提环境是之前搭建的4台Linux虚拟机,详情参见 Linux集群搭建 该环境对应4台服务器,192.168.1.60.61.62.63,其中60为主机,其余为从机 软件版本选择: Java:JDK1 ...

  2. 大数据学习——HADOOP集群搭建

    4.1 HADOOP集群搭建 4.1.1集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据的存储,集群中的角色主 ...

  3. 大数据平台Hadoop集群搭建

    一.概念 Hadoop是由java语言编写的,在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架,其核心部件是HDFS与MapReduce.HDFS是一个分布式文件系统,类似mogilef ...

  4. Java&plus;大数据开发——Hadoop集群环境搭建&lpar;一&rpar;

    1集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据的存储,集群中的角色主要有 NameNode / DataN ...

  5. Java&plus;大数据开发——Hadoop集群环境搭建&lpar;二&rpar;

    1. MAPREDUCE使用 mapreduce是hadoop中的分布式运算编程框架,只要按照其编程规范,只需要编写少量的业务逻辑代码即可实现一个强大的海量数据并发处理程序 2. Demo开发--wo ...

  6. 大数据之hadoop集群安全模式

    集群安全模式1.概述(1)NameNode启动 NameNode启动时,首先将镜像文件(Fsimage)载入内存,并执行编辑日志(Edits)中的各项操作.-旦在内存中成功建立文件系统元数据的影像,则 ...

  7. 大数据学习——hadoop集群搭建2&period;X

    1.准备Linux环境 1.0先将虚拟机的网络模式选为NAT 1.1修改主机名 vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=itcast ### ...

  8. 朝花夕拾之--大数据平台CDH集群离线搭建

    body { border: 1px solid #ddd; outline: 1300px solid #fff; margin: 16px auto; } body .markdown-body ...

  9. Hadoop集群配置(最全面总结)

    Hadoop集群配置(最全面总结) 通常,集群里的一台机器被指定为 NameNode,另一台不同的机器被指定为JobTracker.这些机器是masters.余下的机器即作为DataNode也作为Ta ...

随机推荐

  1. 【&period;NET】Nuget包,把自己的dll放在云端

    //发布自己的nuget包,1.自己的api KEY,2.自己的类库,3.nuget打包工具https://npe.codeplex.com/releases/view/620126          ...

  2. Jquery在线引用地址

    Jquery在线引用地址: 1. 很多网站都是使用这种方式引入,客户的浏览器可能已经缓存过了 jquery.可以直接调用本地的,速度更快… 2. Google code 使用了 cdn 技术在很多地方 ...

  3. iOS开发——UI篇OC篇&amp&semi;UITableView简单封装

    UITableView简单封装 UITableView时iOS开发中使用最多也是最重的一个UI空间,其实在App Store里面的%80以上的应用都用到了这个控件,所以就给大家介绍一下,前面的文章中也 ...

  4. vue组件如何被其他项目引用

    自己写的vue组件怎么才能让其他人引用呢,或者是共用组件如何让其他项目引用.本文就粗细的介绍下,如有疑问欢迎共同讨论.在这里你能了解下如下知识点: 1. 如何发布一个包到npmjs仓库上 2.如何引用 ...

  5. bigdata learning unit two--Spark environment setting

    1.下载 Spark安装之前的准备 文件的解压与改名 tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz rm -rf spark-2.2.0-bin-hadoop2.7. ...

  6. LED点阵书写显示

    LED点阵书写显示屏   摘要:随着时代的发展,数字电子技术已经普及到我们生活,工作,科研,各个领域,而LED显示以其组构方式灵活.显示稳定.功耗低.寿命长.技术成熟.成本低廉等特点在车站.证券所.运 ...

  7. 01 JDBC的问题

    jdbc编程步骤: 1. 加载.注册数据库驱动   DriverManager 2. 创建并获取数据库链接   Connection 3. 创建jdbc statement/preparedState ...

  8. pl&sol;sql连接远程oracle

    1.找到oracle安装程序下的网络配置助手 2.选中本地net服务,进行添加 3.输入远程oracle服务名 4.选中tcp协议 5.输入远程oracle的ip地址 6.在网络服务名处,随便输入一个 ...

  9. HR-人力资源管理系统(Human Resources Management System,HRMS)

    人力资源管理系统(Human Resources Management System,HRMS),是指组织或社会团体运用系统学理论方法,对企业的人力资源管理方方面面进行分析.规划.实施.调整,提高企业 ...

  10. 如何让局域网其他电脑通过IP直接访问自己电脑的网站

    具体方法如下: 1. 打开系统的控制面板 2. 打开控制面板后打开window防火墙. 3.点击图中的“高级设置”选项. 4.点击图中的“本地计算机上的高级安全 Windows 防火墙”在右侧点击“W ...