hadoop2.8.0+cenos6.5搭建伪分布式多节点集群

安装jdk

我们现在一台虚拟机上安装jdk,然后再进行克隆
先卸载原有的jdk,重新安装与你的hadoop相配的版本,我这里选用的是jdk1.8.0_181将jdk文件放到你想要的目录(一般为/usr/local/java),随后配置环境变量
编辑/etc/profile文件,在末尾添加

JAVA_HOME=/usr/local/java/jdk1.8.0_181
JRE_HOME=/usr/local/java/jdk1.8.0_181/jre
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
export PATH JAVA_HOME CLASSPATH

随后使配置文件生效

source /etc/profile

最后测试是否配置成功java -version出现版本信息说明没有问题

网络准备

因为需要配置ssh免密登录,所以我们需要配置静态IP
打开/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
HWADDR=00:0C:29:A7:A4:06
IPADDR=192.168.160.130  //设置你的静态ip,ip范围在虚拟机的网络设置里面查看
GATEWAY=192.168.160.2   //网关最后一个字段设为2,前面同ip地址
NETMSDK=255.255.255.0   //同样,在虚拟机网络设置里查看
TYPE=Ethernet
UUID=99f1b976-0da0-4686-b05b-9d86b70a36f2
ONBOOT=yes   //设置为yes
NM_CONTROLLED=no  // 设置为no
BOOTPROTO=static  //设置为静态即static

然后重新启动网络service network restart
测试网络是否通畅ping baidu.com
成功后我们便开始克隆其他虚拟机,我这里打算一个master,2个slave,所以我要克隆出两个。
克隆的步骤我就不啰嗦啦,很简单的,找一找就好了,我主要是讲讲如何给克隆机配置静态ip
打开克隆机的设置

点击网络适配器,然后点击右边的高级,可以看到该虚拟机的mac地址,拍照,后面需要用到
随后我们打开虚拟机的网络配置文件/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
HWADDR=00:0C:29:3A:17:B5  //修改为你刚刚拍照几下的地址
IPADDR=192.168.160.131   //与前一个不同即可,但要在范围内
GATEWAY=192.168.160.2
NETMASK=255.255.255.0
TYPE=Ethernet
UUID=99f1b976-0da0-4686-b05b-9d86b70a36f2
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static 


随后需要更改虚拟机的网络端口修改文件
/etc/udev/rules.d/70-persistent-net.rules
在这里插入图片描述
将与你拍照记下的mac地址相符的保留,删除另一项,然后将NAME的值改为eth0

最后重启网络service network restart
验证是否成功

免密登录

三个虚拟机能够互相ping通之后,我们就开始配置ssh免密登录
我这里使用的hadoop用户创建的

修改主机名为master和slave1与slave2
切换到root用户使用vi /etc/sysconfig/network
修改hostname

修改三台虚拟机的ssh配置文件
vi /etc/ssh/sshd_config
去掉以下代码段的注释
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
重启ssh服务
service sshd restart

运行ssh-keygen -t rsa然后一路回车,三台虚拟机均这样
运行之后发现用户目录下出现了.ssh文件夹,进入文件夹,里面有两个文件

id_rsa  id_rsa.pub

我们配置一下三台虚拟机的hosts,方便传输文件vi /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
//需要添加到部分,ip对应你自己的
192.168.160.130 master
192.168.160.131 slave1
192.168.160.132 slave2

这里我们要将每台主机的公钥共享,即三台虚拟机都有其他两台的公钥,我们使用scp命令来传输文件
我们现将本机(master)上的公钥放到authorized_keys文件内

cat id_rsa.pub >> authorized_keys

随后将该文件扩散到其它虚拟机
将文件传到slave1

scp  authorized_keys hadoop@slave1:~/.ssh/ 

将slave1上的公钥放到authorized_keys文件内

cat id_rsa.pub >> authorized_keys

将文件传到slave2

scp  authorized_keys hadoop@slave2:~/.ssh/ 

将slave2上的公钥放到authorized_keys文件内

cat id_rsa.pub >> authorized_keys

将文件传到slave1和master

scp  authorized_keys hadoop@slave1:~/.ssh/ 
scp  authorized_keys hadoop@master:~/.ssh/ 

扩散完之后需要修改每台虚拟机上.ssh文件夹和authorized_keys的权限

chmod 700 .ssh
chmod 600 authorized_keys

随后验证ssh slave1
第一次登录需要输入密码,以后均不用

hadoop文件配置

下载hadoop文件到三个虚拟机的/usr/local文件夹下并解压,切换到hadoop文件夹下的etc/hadoop
目录结构为/usr/local/hadoop/etc/hadoop
编辑该文件夹的配置文件hadoop-env.sh core-site.xml yarn-site.xml mapred-site.xml hdfs-site.xml
注意,master与slave的配置文件有所不同,但大部分相同,这里先配置相同的部分。
在hadoop-env.sh 末尾添加export JAVA_HOME=你的java地址
core-site.xml

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:9000</value>
        </property>
</configuration>

yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>master</value>
  </property>
  <!-- reducer获取数据的方式 -->
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>

  <property>
     <name>yarn.resourcemanager.resource-tracker.address</name>
     <value>master:8025</value>
   </property>
   <property>
     <name>yarn.resourcemanager.scheduler.address</name>
     <value>master:8030</value>
   </property>
   <property>
     <name>yarn.resourcemanager.address</name>
     <value>master:8050</value>
   </property>

</configuration>

mapred-site.xml 该文件不存在,但有 mapred-site.xml.temple文件,将其重命名为 mapred-site.xml ,然后修改


<configuration>
        <property>
            <name>mapred.job.tracker</name>
            <value>mstert:54311</value>
        </property>
</configuration>

hdfs-site.xml
这里设置的文件路径我们随后会创建

<configuration>

        <property>
                <name>dfs.replication</name>
                <value>2</value>   //需要注意我有两个从节点,所以是2
        </property>

<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value>
</property>
</configuration>

接下来配置master不同的部分
hdfs-site.xml

<configuration>

<property>
  <name>dfs.replication</name>
  <value>2</value>
</property>

<property>
  <name>dfs.datanode.data.dir</name>
  <value>file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value>
</property>

<property>   //添加的部分
  <name>dfs.namenode.name.dir</name>
  <value>file:/usr/local/hadoop/hadoop_data/hdfs/namenode</value>
</property>
</configuration>

创建HDFS目录
在master上通过ssh登录到slave上创建目录
删除掉原来的目录(如果原来有的话)

 sudo rm -rf /usr/local/hadoop/hadoop_data/hdfs

创建新的目录

sudo mkdir -p /usr/local/hadoop/hadoop_data/hdfs/datanode

修改权限

sudo chown -R hadoop:hadoop /usr/local/hadoop

所有slave均如此
最后配置master
master上主要是在创建目录时不同
sudo mkdir -p /usr/local/hadoop/hadoop_data/hdfs/namenode
其余两步同slave相同
配置完之后,我们就开始格式化NameNode HDFS目录

hadoop namenode -format

如果出现找不到hadoop,说明没有配置hadoop的环境变量在/etc/profile文件末尾添加即可。这是我的HADOOP_HOME=/usr/local/hadoop
到此,如果格式化成功,那么会出现

19/08/27 17:40:13 INFO common.Storage: Storage directory /usr/local/hadoop/hadoop_data/hdfs/namenode has been successfully formatted.

所明成功,否则需要重新来过0.0
值得一提的是,不要重复执行hadoop namenode -format
因为会发生错误,具体我也不详。如果多次执行了,出现这样那样的错误,建议重新创建HDFS目录,包括删除,新建和修改权限。

测试运行

看到这里,恭喜你已经成功了,如果还是不放心的话可以在web上访问你的hdfs和yarn
先切换到sbin目录下/usr/local/hadoop/sbin
开启hdfs./start-dfs.sh
开启yarn./start-yarn.sh
访问hdfs
具体做法是在虚拟机外浏览器输入192.168.160.130:50070(输入你的master的ip地址才行哦)
在这里插入图片描述看到Live nodes 有两个,因为我有两个slave
访问yarn
浏览器输入192.168.160.130:8088

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值