伪分布是namenode和datanode都在一台机器上;
完全节点是分布在不同机器上。
对于开发人员而言,为了模拟完全hadoop,可以通过克隆虚拟机来实现多机并发。
克隆:完全克隆,不是克隆链接。注意CPU上限、共享文件1
克隆出多台后,分别配置主机名和ip,主机名在/etc/hostname上;为了能映射主机名和ip,同时也需要修改/etc/hosts
然后 service network restart
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
为了能无密登录各台机器,需要进行以下三步:
1.删除每台机器上/home/username/.ssh/*
可以通过ssh命令,ssh s137 rm -rf /home/wangcong/.ssh/*
2.在namenode机器上,生成秘钥对:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
3.将namenode上的公钥传到各台datanode上的~/.ssh的authorized_keys中(包括自己)
scp id_rsa.pub wangcong@s138:/home/wangcong/.ssh/authorized_keys
authorized_keys的权限除了自己别人都不能写
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
更改三个.xml"
<?xml version="1.0"?>
<!-- core-site.xml -->
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://s136/</value>
</property>
</configuration>
<?xml version="1.0"?>
<!-- hdfs-site.xml -->
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/disk1/hdfs/name,/remote/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/disk1/hdfs/data,/disk2/hdfs/data</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>/disk1/hdfs/namesecondary,/disk2/hdfs/namesecondary</value>
</property>
</configuration>
<?xml version="1.0"?>
<!-- yarn-site.xml -->
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>resourcemanager</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/disk1/nm-local-dir,/disk2/nm-local-dir</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce.shuffle</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>16384</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>16</value>
</property>
</configuration>
修改slave文件(hadoop3.0以上的更改为workers文件名),里面填写datanode的主机名
检查hadoop-env.sh的java路径是否是直接指向的。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
然后分发出去:
scp -r hadoop(包含上面.xml文件的文件夹) wangcong@s137:/opt/hadoop/etc/
删除各机器上tmp下面的所有临时文件
rm -rf hadoop-wangcong
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hadoop namenode -format
start-all.sh
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
验证时,可通过jps看各机器所启动的进程。
ssh s138 jps 刚开始会报错,返回找不到jps这个命令
ssh s138 '$PATH',发现只有usr/local/bin里面的命令能用
所以在每台机器上的/usr/local/bin内建立软链接,指向jdk包内的jps,试验即可(中间注意权限的问题)