搭建分布式hadoop

搭建hadoop-2.5.0.tar.gz,下载地址:http://pan.baidu.com/s/1pKWe1L5

  • 集群规划:三台服务器:hadoop-senior.orange.com、hadoop-senior.banana.com和hadoop-senior.pear.com
主机名
bananaresourcedatanodenodemanager
orangenamenodedatanodenodemanager
pearsecondarynamenodedatanodenodemanagerhistoryserver
  • 改变时区,orange下操作:
    # mv /etc/localtime /etc/localtime_bak
    # ln -s /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

  • 同步时间并保存至硬件:
    # ntpdate asia.pool.ntp.org
    # hwclock -w

  • 修改ntp.conf
    # vi /etc/ntp.conf
                    //删除前面的#,把网段改成自己的网段
    		restrict 192.168.181.0 mask 255.255.255.0 nomodify notrap
    		//下面三行添加#
    		#server 0.centos.pool.ntp.org
    		#server 1.centos.pool.ntp.org
    		#server 2.centos.pool.ntp.org
    		//删除前面的#
    		server  127.127.1.0     # local clock
    		fudge   127.127.1.0 stratum 10
# service ntpd restart
#  chkconfig ntpd on

  • 设置slave的时间同步,banana和pear下操作:
# crontab -e
*/10 * * * * /usr/sbin/ntpdate hadoop-senior.orange.com
# service crond restart
  • 配置SSH无密钥登录,现在orange上操作:
# ssh-keygen -t rsa
此操作全部回车
# ssh-copy-id beifeng@hadoop-senior.banana.com
第一次输入yes
第二次输入密码
同理执行:
# ssh-copy-id beifeng@hadoop-senior.pear.com
# ssh-copy-id beifeng@hadoop-senior.orange.com
按照上述方式在banana和pear上操作。
  • 配置Hadoop分布式环境:
修改.sh文件中的JAVA_HOME,如下三个文件:
[root@hadoop-senior hadoop]# grep -n "/usr/java/jdk1.7.0_79" *
hadoop-env.sh:25:export JAVA_HOME=/usr/java/jdk1.7.0_79
mapred-env.sh:16:export JAVA_HOME=/usr/java/jdk1.7.0_79
yarn-env.sh:23:export JAVA_HOME=/usr/java/jdk1.7.0_79
修改.xml配置文件(参考集群规划),如下四个文件:
core-site.xml:
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop-senior.orange.com:8020</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/modules/hadoop-2.5.0/data</value>
    </property>
</configuration>
hdfs-site.xml:
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop-senior.orange.com:50070</value>
    </property>
	<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop-senior.pear.com:50090</value>
    </property>
    <property>
        <name>dfs.permissions.enabled</name>
        <value>true</value>
    </property>
</configuration>
yarn-site.xml:
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop-senior.banana.com</value>
    </property>
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>86400</value>
    </property>
</configuration>
mapred-site.xml:
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop-senior.pear.com:10020</value>
    </property>
	<property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop-senior.pear.com:19888</value>
    </property>
</configuration>
在slaves文件中添加:
hadoop-senior.orange.com
hadoop-senior.banana.com
hadoop-senior.pear.com
  • 将hadoop安装目录拷贝到banana、pear:
# scp -r hadoop-2.5.0/ beifeng@hadoop-senior.banana.com:/opt/modules/
# scp -r hadoop-2.5.0/ beifeng@hadoop-senior.pear.com:/opt/modules/


格式化:
# /opt/modules/hadoop-2.5.0/bin/hdfs namenode -format
根据集群规划启动响应的服务:
在orange下执行:
# /opt/modules/hadoop-2.5.0/bin/start-dfs.sh 
在banana下执行:
# /opt/modules/hadoop-2.5.0/bin/start-yarn.sh

在pear下执行:
# /opt/modules/hadoop-2.5.0/bin/mr-jobhistory-daemon.sh  start historyserver

  • 测试,上传文件,执行wordcount:
# /opt/modules/hadoop-2.5.0/bin/hdfs dfs -put sort.txt /input/
# /opt/modules/hadoop-2.5.0/bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /input/sort.txt /output
# /opt/modules/hadoop-2.5.0/bin/hdfs dfs -text /output/part*
[beifeng@hadoop-senior hadoop-2.5.0]$ ./bin/hdfs dfs -text /output/part*
abcs	1
ddfs	1
hadoop	3
word	1

  • 评测HDFS:
写评测:
$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.5.0-tests.jar  TestDFSIO -write -nrFile 10 -fileSize 1000
写10个,每个1000MB的文件,文件默认被写到hdfs的/benchmarks/TestDFSIO
读评测:
$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.5.0-tests.jar  TestDFSIO -read -nrFiles 10 -fileSize 1000
清理测试数据:
$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.5.0-tests.jar TestDFSIO -clean

评测mapreduce
1、生产若干随机数据
$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar teragen 100 /input/
2、运行terasort对数据库进行排序
$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar terasort /input /output
3、运行tera  验证排序过的teragen
$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar teravalidate /output /output2



### 构建分布式Hadoop集群 #### 准备工作 为了在Windows平台上利用Docker构建分布式Hadoop集群,需先完成环境准备。这包括但不限于安装并配置好Docker Desktop应用[^1]。 #### 创建基础镜像与网络设置 一旦确认Docker已成功部署于系统之上,则可以着手创建用于运行Hadoop节点的基础Linux操作系统映像。通常会选择Ubuntu作为底层OS来简化后续操作流程。通过命令`docker pull ubuntu:16.04`获取所需版本的操作系统镜像文件[^3]。之后,建立一个名为"hadoop"的自定义桥接型内部虚拟网络以便各容器间通信顺畅无阻: ```bash docker network create -d bridge hadoop ``` #### 配置Master节点 基于先前拉取到的基础镜像实例化一个新的容器,并赋予其特定的身份标识——即主机名设为'master'以及相应的别名'tag': ```bash docker run -dit --network hadoop --hostname=master --name master nethdp /bin/bash ``` 进入这个新启动起来的服务端口内执行必要的软件包安装任务,比如Java JDK、SSH服务等依赖项;同时调整防火墙策略允许外部访问8088端口(YARN UI)、9870端口(NameNode Web界面)。最后一步是初始化整个HDFS文件系统的命名空间结构体。 #### 添加Slave节点 重复上述过程以增加额外的工作节点加入现有群集之中。这里仅展示添加第二个从属成员的例子: ```bash docker run -dit --network hadoop --hostname=slave2 --name slave2 nethdp /bin/bash ``` 同样地,在这些新增加出来的计算资源上面也需要同步进行相同类型的预处理作业直至满足官方文档所提出的最低限度要求为止。 #### 启动Hadoop集群 当所有的物理硬件设施都已经被正确组装完毕后就可以正式开启业务逻辑层面的功能模块了。返回至主控台下发指令让各个组成部分协同运作形成完整的生态系统: ```bash start-dfs.sh && start-yarn.sh ``` 以上就是在Windows环境下借助Docker技术实现多机协作模式下的大数据存储解决方案的大致框架描述[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值