Hadoop集群下的全分布式的安装
主机名称 | IP地址 | 功能 |
master | 192.168.10.11 | NameNode、DataNode |
slave1 | 192.168.10.12 | DataNode |
slave2 | 192.168.10.13 | DataNode |
所有机子都需要配置 1.JDK 2.SSH免登陆 3.Hadoop集群 |
SSH免登陆
计算机A每次SSH远程连接计算机B时,都需要输入密码。当有些软件需要频繁使用SSH连接其他计算机时,这个时候需要人工填写计算机B的密码,这个会造成大量无用操作,不利于程序的使用。
在为了避免这类问题的发生,而且也要兼顾安全问题(设置SSH免密码登陆后,SSH这台计算就不需要密码即可登陆,存在安全隐患),使用公钥和私钥方式解决SSH免密码登陆问题,而且只在一边做,另一边不做,这样也达到了安全的问题。一般是那台机器需要SSH远程其他机器,就在这台机器上设置SSH免登陆操作。
"公私钥"认证方式简单的解释:首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub; 私钥文件:~/.ssh/id_rsa)。然后把公钥放到服务器上(~/.ssh/authorized_keys), 自己保留好私钥.在使用ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了。
ssh 无密码登录要使用公钥与私钥。linux下可以用ssh-keygen生成公钥/私钥对.
//在master机下生成公钥/私钥对。
# ssh-keygen -trsa
//追加到key文件当中
# cat~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
//将master机子上的key给其他机子上发送一份
# scp~/.ssh/authorized_keys slave1:/root/.ssh/
# scp~/.ssh/authorized_keys slave2:/root/.ssh/
Hadoop集群搭建(1、注意修改主机名称(修改master为你对应的主机名称)。2、home修改为hadoop-2.7.1安装解压路径例:tar -zxvf hadoop-2.7.1.tar.gz -C /usr/local --解压到/usr/local 下则home改为/ust/local/)
1)将hadoop-env.sh文件中的
exportJAVA_HOME=${JAVA_HOME}
改成绝对路径:exportJAVA_HOME="/home/bigdata/jdk"(改成自己jdk对应的)
2)修改core-site.xml文件
<!—配置hdfs的namenode地址-->
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<!—文件IO时的缓存大小>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
<!—配置hadoop临时文件存储的目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/bigdata/tmp</value>
</property>
3)修改hdfs-site.xml文件
<!--配置hdfs的副本数量-->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!--配置块大小128M(字节单位)-->
<property>
<name>dfs.block.size</name>
<value>134217728</value>
</property>
<!--配置namenode的元数据的存储路径 增加存放空间避免挂机(,/aaa/ ,/bbb/可不写)-->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///home/hadoopdata/dfs/name ,/aaa/ ,/bbb/</value>
</property>
<!--配置datanode的数据的存储路径-->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/hadoopdata/dfs/data</value>
</property>
<!--设置检测的数据存放路径-->
<property>
<name>fs.checkpoint.dir</name>
<value>file:///home/hadoopdata/checkpoint/dfs/cname</value>
</property>
<!--设置检测点的日志文件的存放路径-->
<property>
<name>fs.checkpoint.edits.dir</name>
<value>file:///home/hadoopdata/checkpoint/dfs/cname</value>
</property>
<!--配置hdfs的web ui的监控端口-->
<property>
<name>dfs.http.address</name>
<value>master:50070</value>
</property>
<!--配置secondary namenode的web ui 监控端口-->
<property>
<name>dfs.secondary.http.address</name>
<value>slave1:50090</value>
</property>
<!—是否启用rest api 访问 hdfs-->
<property>
<name>dfs.webhdfs.enabled</name>
<value>false</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
4)修改mapred-site.xml文件
命令如下:
# mvmapred-site.xml.template mapred-site.xml
#vi mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<final>true</final>
</property>
<!-- 指定mapreduce历史纪录的内部通讯地址-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<!-- 指定mapreduce的历史纪录的web ui 通讯端口--->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
5)修改yarn-site.xml
<!—指定yarn的主机名-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master </value>
</property>
<!--指定mapreduce使用shuffle过程-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<--rm 的内部通讯地址-->
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<!--指定rm的scheduler的内部通讯地址-->
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<!--指定resource-tracker的内部通讯地址>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<!—rm管理员内部通讯地址-->
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<!—rm的web ui 的通讯端口 -->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
6)#vi /etc/hadoop/slaves
将所有需要配置成slave类型的机器的机器名写在其内部即可.(从机)
注意:每个机器名占一行。
master
slave1
slave2
#vi /etc/hadoop/master
Master文件存的是的secondarynamenode列表
slave1
7)//将配置好的jdk文件夹和Hadoop文件夹发送给slave1和slave2机子
# scp -r jdk/slave1:/home/bigdata/jdk
# scp -r jdk/slave2:/home/bigdata/jdk
# scp -r/home/bigdata/hadoop slave1:/home/bigdata/
# scp -r/home/bigdata/hadoop slave2:/home/bigdata/
8)//启动Hadoop集群
//启动之前先格式化,只需要一次即可
#hadoop namenode-format
//启动namenode、datanode、ResourceManager、NodeManager节点
# start-dfs.sh
# start-yarn.sh
#./mr-jobhistory-daemon.sh start historyserver (hadoop文件目录下)
# jps (查看启动的java进程)
浏览器访问xml中各配置的ip+:端口号