10.0.0.11 dockerapache-01
10.0.0.12 dockerapache-02 #管理节点
10.0.0.13 dockerapache-03
vim /etc/hosts
这里根据自己的情况配置,配置完成后,互相ping一下host名确认是不是配置成功
ping DockerApache-02
下载好jdk的包以后,上传至服务器 /usr/local , 解压
tar -xvzf jdk-8u231-linux-x64.tar.gz
然后配置环境变量
推荐配置
vim /etc/profile.d/jdk1.8.sh
export JAVA_HOME=/usr/local/jdk1.8.0_161/
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
或者:
vim /etc/profile
#JAVA
export JAVA_HOME=/usr/local/jdk1.8.0_161
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
对于管理节点执行以下操作
ssh-keygen -t rsa #回车即可,用于生成秘钥
scp ~/.ssh/id_rsa.pub root@10.0.0.12:///$PWD #拷贝至其他节点,此处IP为其他任一节点IP
然后登陆刚才配置免密登陆的节点10.0.0.12,执行以下操作
cd ~/.ssh
cat id_rsa.pub >> ~/.ssh/authorized_keys
依次把管理节点到其他节点的免密配置完。
再配置第二个节点到其他节点的免密登陆,第三个,等等。
https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz
下载好后上传至服务器 /usr/local下解压
tar -xvzf hadoop-3.1.3.tar.gz
vim /etc/profile.d/hadoop.sh
或者
vim /etc/profile
新增以下内容
#hadoop
export HADOOP_HOME=/usr/local/hadoop-3.1.3
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
最后需要
source /etc/profile
还可以检验一下
hadoop version
配置文件目录 (在目录/usr/local/hadoop-3.1.3/etc/hadoop 下)
hadoop-env.sh
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml
workers
6.1 配置hadoop-env.sh
vim /usr/local/hadoop-3.1.3/etc/hadoop/hadoop-env.sh
#JAVA
export JAVA_HHOME=/usr/local/jdk1.8.0_161
#USER
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
6.2 配置core-site.xml
主要配置hadoop公共属性
vim /usr/local/hadoop-3.1.3/etc/hadoop/core-site.xml
fs.defaultFS</name>
hdfs://DockerApache-02:9000</value>
</property>
hadoop.tmp.dir</name>
/opt/hadoop_tmp</value>
</property>
</configuration>
fs.defaultFs 指NameNode所在节点,value这里配置第一个节点;端口默认;
hadoop.tmp.dir 指配置元数据存放的位置。value这里配置/opt/hadoop_tmp,需要自己创建对应文件夹。 后续如果查看fsiamge和edits文件,可以在这个目录下找。
5.2 配置hdfs-site.xml
vim /usr/local/hadoop-3.1.3/etc/hadoop/hdfs-site.xml
dfs.replication</name>
3</value>
</property>
dfs.namenode.http-address</name>
dockerapache-02:50070</value>
</property>
dfs.namenode.secondary.http-address</name>
dockerapache-03:50090</value>
</property>
</configuration>
6.3 配置mapred-site.xml
vim /usr/local/hadoop-3.1.3/etc/hadoop/mapred-site.xml
mapreduce.framework.name</name>
yarn</value>
</property>
</configuration>
6.4 配置 yarn-site.xml
vim /usr/local/hadoop-3.1.3/etc/hadoop/yarn-site.xml
<!-- Site specific YARN configuration properties -->
yarn.nodemanager.aux-services</name>
mapreduce_shuffle</value>
</property>
yarn.resourcemanager.hostname</name>
DockerApache-01</value>
</property>
</configuration>
6.5 workers
vim /usr/local/hadoop-3.1.3/etc/hadoop/workers
删掉里面原有的localhost,改为集群节点
10.28.3.11 dockerapache-01
10.28.3.12 dockerapache-02
10.28.3.13 dockerapache-03
scp -r /usr/local/hadoop-3.1.3/ root@dockerapache-02:/usr/local/
scp /etc/profile.d/hadoop.sh root@dockerapache-02:/etc/profile.d
scp -r /usr/local/hadoop-3.1.3/ root@dockerapache-03:/usr/local/
之后再远程各个节点上执行一下以下命令,让环境变量生效
source /etc/profile
8 格式化
在管理节点上操作
hdfs namenode -format
目前按照上述配置执行,格式化namenode成功,如果失败,请根据报错信息排查,然后重新格式化namenode。
问题1:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic)
是免密那里步骤有问题,或者说是ssh那里配置有问题了,百度有多种解决方式。本次解决问题的key在于
UsePam yes
问题2:
namenode报端口占用,起不来,如
org.apache.hadoop.http.HttpServer2: HttpServer.start() threw a non Bind IOException
java.net.BindException: Port in use: 0.0.0.0:50070
查其他博客,是端口50070被占用导致namenode起不来,通过命令 lsof -i:50070 查看进程id,kill掉该进程然后重启hadoop即可。
本次部署过程中,使用上述办法查看端口并没有程序占用。最后是重新格式化了一下namenode解决。