赞
踩
以下所有的操作都是CtntOS7系统并使用root用户权限,在此之前确定以下环境配置好:
1、配置虚拟机网络。
2、添加ip映射关系到hosts文件。
3、关闭防火墙以及selinux。
1、下载解压JDK,并配置环境变量(8以上版本):
export JAVA_HOME=/home/java8
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
使环境变量生效:source /etc/profile,顺便给解压后的文件夹改个名字。
2、下载解压hadoop包(略),并配置环境变量 vim /etc/profile。
export HADOOP_HOME=/home/hadoop-3.3.0
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
使环境变量生效:source /etc/profile,顺便给解压后的文件夹改个名字。
修改home/hadoop-3.3.0/etc/hadoop/hadoop.env.sh ,将JAVA_HOME注释删掉,改成自己配置(和/etc/profile一样即可)
3、修改配置文件,需要修改的文件都在/hadoop-3.3.0/etc/hadoop/目录下:
3.1 配置core-site.xml:在标签中添加如下配置:
<property>
<name>fs.defaultFS</name>
<value>hdfs://k8s-master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop-3.3.0/hadoopdata</value>
</property>
3.2 配置HDFS文件系统,编辑hdfs-site.xml在添加如下配置:
<property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.name.dir</name> <value>/usr/local/data/namenode</value> </property> <property> <name>dfs.data.dir</name> <value>/usr/local/data/datanode</value> </property> <property> <name>dfs.tmp.dir</name> <value>/usr/local/data/temp</value> </property>
3.3 配置yarn-site.xml,同样在标签中添加如下配置:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>k8s-master</value>
</property>
3.4 配置MapReduce计算框架,编辑mapred-site.xml在配置如下:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
3.5 配置slaves文件,该文件给出了Hadoop集群的所有slave节点(较新版本为workers,要在workers中添加master和slaves)。
#先删除localhost,然后根据自己的情况配置
k8s-node1
k8s-node2
4、至此,主节点上的配置就已经完成,现在把主节点的配置复制到slave上
scp -r /home/hadoop-3.3.0 root@k8s-node1:/home
scp -r /home/hadoop-3.3.0 root@k8s-node2:/home
完成以后,在slaves上配置JDK,同1。
5、格式化文件系统,只在master做就行了。
hadoop namenode -format
6、启动和关闭Hadoop集群
进入hadoop安装目录的sbin文件夹下,运行如下命令:
#开启
start-dfs.sh
#关闭
stop-dfs.sh
#该目录下还有很多命令,看自己需要开启关闭哪个自行选择。
7、验证Hadoop集群是否启动成功。
master执行jps
如果出现namenode,datanode,jps,SecondNamenode这几个就算成功了。
同样在slave上执行jps验证。
还可以在浏览器上验证。success!
接下来是可能出现的几个问题:
1、ERROR:ATTEMPTING TO OPERATE ON HDFS NAMENODE AS ROOT
需要在所有节点start-dfs.sh,stop-dfs.sh 添加如下内容:
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
在所有start-yarn.sh,stop-yarn.sh添加以下内容:
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
2、Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password
这其实是需要进行免密登录配置。
先在本机生成公钥:
ssh-keygen -t rsa
连续三下回车,然后进入到.ssh目录下。
将本机的id_rsa.pub添加到其他机器中(master自身要执行:ssh-copy-id -i k8s-master):
ssh-copy-id -i k8s-node1
重新启动hadoop。
3、jps后没有datanode。这个问题是由于多次格式化文件系统导致namenode的clusterID变了而dataNode的clusterID没变。只要到master的namenode/current/VERSION文件中把clusterID拷贝到datanode/current/VERSION中就可以了(slave最好也弄一下)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。