zoukankan      html  css  js  c++  java
  • 大数据测试之hadoop集群配置和测试

    大数据测试之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

  • 相关阅读:
    在WebBrowser控件中获取鼠标在网页(不是浏览器窗口)上点击的位置,
    Sqlserver 2008 评估版本到期,Sqlserver 2008试用期已过,解决方案.
    C#防止WebBrowser在新窗口中打开链接页面
    c#控制IE浏览器自动点击等事件WebBrowser,mshtml.IHTMLDocument2
    屏蔽右键代码(防止网页恶意复制)
    SEO优化中的div+css命名规则
    photoshop CS不能打字,出现死机等现象的解决办法!!
    带关闭功能的漂浮图片代码
    VS2008连接SQL2005问题,老连接不上。
    WinForm中获取鼠标当前位置
  • 原文地址:https://www.cnblogs.com/poptest/p/5239399.html
Copyright © 2011-2022 走看看