Ubuntu/CentOS hadoop-2.x Cluster Setup

一、配置hosts文件
#CentOS6.x
vim /etc/sysconfig/network
    HOSTNAME=master

#Ubuntu/CentOS7.x
sudo vim /etc/hostname
master
sudo hostname slaves01

sudo vim /etc/hosts
ip1 master
ip2 slave1
ip3 slave2
此处特别注意下,我自己由于这个地方出问题导致Hadoop集群延迟启动2/3天,那种感觉实在是难受...
问题是:如果是在master上操作的话 ip1 必须是 master 的内网ip ,同理slaves上也是一样,自己的主机上的IP要改成内网IP,其他的要用外网IP。
补充网络知识:
服务器    公网ip可以用于域名解析ip,服务器远程登录ip,是最主要的服务器ip地址。
    内网ip不能用于域名解析,不可以直接用于服务器远程登录,其主要作用是:跟当前帐号下的其他同集群的机器通信。
一些小型企业或者学校,通常都是申请一个固定的IP地址,然后通过IP共享(IP Sharing),使用整个公司或学校的机器都能够访问互联网。而这些企业或学校的机器使用的IP地址就是内网IP,内网IP是在规划IPv4协议时,考虑到IP地址资源可能不足,就专门为内部网设计私有IP地址(或称之为保留地址),一般常用内网IP地址都是这种形式的:10.X.X.X、
172.16.X.X-172.31.X.X、192.168.X.X等。需要注意的是,内网的计算机可向Internet上的其他计算机发送连接请求,但Internet上其他的计算机无法向内网的计算机发送连接请求。
    公网IP就是除了保留IP地址以外的IP地址,可以与Internet上的其他计算机随意互相访问。我们通常所说的IP地址,其实就是指的公网 IP。互联网上的每台计算机都有一个独立的IP地址,该IP地址唯一确定互联网上的一台计算机。这里的IP地址就是指的公网IP地址。
    其实,互联网上的计算机是通过“公网IP+内网IP”来唯一确定的,就像很多大楼都是201房间一样,房间号可能一样,但是大楼肯定是唯一的。公网IP地址和内网IP地址也是同样,不同企业或学校的机器可能有相同的内网IP地址,但是他们的公网IP地址肯定不同。
    那么这些企业或学校的计算机是怎样IP地址共享的呢?
这就需要使用NAT(Network Address Translation,网络地址转换)功能。当内部计算机要连接互联网时,首先需要通过NAT技术,将内部计算机数据包中有关IP地址的设置都设成NAT主机的公共IP地址,然后再传送到Internet,虽然内部计算机使用的是私有IP地址,但在连接Internet时,就可以通过NAT主机的NAT技术,将内网我IP地址修改为公网IP地址,如此一来,内网计算机就可以向Internet请求数据了。
    此处master的IP对于slaves是公网IP,但是对于master自己应该用内网IP—真正的对应自己的机器的ifconfig。

二、建立hadoop运行帐号
sudo groupadd hadoop
sudo useradd -s /bin/bash -d /home/hadoop -m hadoop -g hadoop
sudo passwd hadoop

为hadoop添加sudo权限
#Ubuntu
sudo adduser hadoop sudo
#CentOS
visudo
    root    ALL=(ALL)       ALL
    hadoop  ALL=(ALL)       ALL

三、配置ssh免密码连入
ssh master
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@slaves01


关闭防火墙
#Ubuntu
sudo ufw disable

#CentOS
6.x:
sudo service iptables stop   # 关闭iptables
sudo chkconfig iptables off  # 禁止iptables开机自启
7.x:
systemctl stop firewalld.service    # 关闭firewall
systemctl disable firewalld.service # 禁止firewall开机启动

四、安装Java和Hadoop
sudo mkdir -p /data/service
sudo chown -R hadoop:hadoop /data

sudo vim /etc/profile.d/java-env.sh
source /etc/profile.d/java-env.sh

hdfs namenode -format

hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/hadoop

hdfs dfs -put /etc/hadoop input

hadoop jar /data/service/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.2.jar grep input output 'dfs[a-z.]+'

利用基准评测程序测试Hadoop集群
1)使用TestDFSIO来评测HDFS,它用一个MapReduce作业并行地读或写文件。各个文件在独立的map任务上被读或写;map任务输出一些针对刚刚处理完的文件的统计信息;reduce任务汇总这些统计信息,并产生一份总结报告。
写:
hadoop jar /data/service/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.8.2-tests.jar TestDFSIO -write -nrFiles 10 -fileSize 10
读:
hadoop jar /data/service/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.8.2-tests.jar TestDFSIO -read -nrFiles 10 -fileSize 10
清:
hadoop jar /data/service/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.8.2-tests.jar TestDFSIO -clean
2)使用Sort程序评测MapReduce,它用一个MapReduce程序对输入数据做部分排序。
    测试步骤:
        1)创建随机数据。使用RandomWriter来产生随机数。
        2)执行排序。
        3)验证结果。
3)其他基准评测程序
MRBench(使用mrbench)会多次运行一个小型作业。与sort基准不同,该基准的主要目地是检验小型作业能否快速响应
NNBench(使用nnbench)测试namenode硬件的加载过程
Gridmix是一个基准评测程序套装。通过模拟一些真实常见的数据访问模式,Gridmix能逼真地为一个集群的负载建模。

posted on 2017-12-13 15:33  唐先生_DowneyJr  阅读(166)  评论(0编辑  收藏  举报

导航