hadoop集群搭建
从周日一直到周三,一有空就搞,终于在周三完成了集群的搭建,
先说下基本过程,
第一步当然是下载hadoop,官网上都有,这个就不多说了,下载完后解压,解压时要特别注意,最后不要在root用户下操作,因为后续要配置无密码 ssh登录,root下配置 无密码ssh登录有点麻烦
命令:tar -zxf hadoop.tar.gz
第二步配置无密码ssh登录,如果不配置的话,每次启动hadoop都要输入密码,而且集群根本没法实现
切换到当前用户目录
命令: cd
cd .ssh
keygen-rsa
创建完成后把公钥里的内容拷贝到一个新文件authorized_keys中,即可完成,把上述文件拷贝到集群的其他机器上
第三步 配置环境变量
- export HADOOP_HOME=/usr/local/hadoop
- export HADOOP_INSTALL=$HADOOP_HOME
- export HADOOP_MAPRED_HOME=$HADOOP_HOME
- export HADOOP_COMMON_HOME=$HADOOP_HOME
- export HADOOP_HDFS_HOME=$HADOOP_HOME
- export YARN_HOME=$HADOOP_HOME
- export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
- export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
第四步配置必要的参数
文件core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://Master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> </configuration>
文件hdfs-site.xml
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>Master:50090</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/data</value> </property> </configuration>
文件 mapred-site.xml (可能需要先重命名,默认文件名为 mapred-site.xml.template),然后配置修改如下:
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>Master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>Master:19888</value> </property> </configuration>
文件 yarn-site.xml:
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>Master</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
第五步格式化namenode
hdfs namenode -format
第六步集群配置
在slaves文件中加入所有机器的ip地址
第七步配置hosts
这一步其实很重要,因为hadoop集群用的是hostname而不是ip,所以必须配置hosts
vi /etc/hosts
XXX.XXX.XXX.XXX 主机名
如果集群内有hostname相同的两台机器,就会有一台机器的datanode无法正常显示,
start-all.sh