hadoop 分布式安装笔记及安装过程中遇到的问题
准备工作
1 准备3个linux系统的环境主机或者虚拟机
2 修改/etc/hostname文件将主机名分别改为 master、slave1、slave2
3 为每台主机创建hadoop用户
4 为三台主机的hadoop用户配置免密登录
ssh-keygen -t rsa 命令生公钥文件
cat .ssh/id_rsa.pub >> .ssh/authorized_keys 将hadoop用户下生成的加入到用于认证的公钥文件中,并将本台主机的公钥内容追加的其他两台主机hadoop用户下的公钥文件当中。
5 安装JAVA环境
6 关闭防火墙
7 为hadoop用户添加sudo权限
开始安装
1 用hadoop用户创建/usr/local/hadoop 目录,并将下载好的hadoop压缩包上传至此目录解压
2 配置环境变量(root用户操作)
vi /etc/profile
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.8.5
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
source /etc/profile
3 hadoop version 可以查看hadoop版本
[root@master ~]# hadoop version Hadoop 2.8.5 Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 0b8464d75227fcee2c6e7f2410377b3d53d3d5f8 Compiled by jdu on 2018-09-10T03:32Z Compiled with protoc 2.5.0 From source with checksum 9942ca5c745417c14e318835f420733 This command was run using /usr/local/hadoop/hadoop-2.8.5/share/hadoop/common/hadoop-common-2.8.5.jar
4 修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/local/java/jdk1.8.0_231 #下边这两行是后边遇到问题后才加上的配置文件 export HADOOP_IDENT_STRING=$USER export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"
5 修改core-site.xml( hadoop 的核心配置文件,添加设置为namenode节点的地址,端口号一般为9000)
<configuration> <property> <name>fs.default.name</name> <value>hdfs://10.12.1.170:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/hadoop-2.8.5/tmp</value> </property> </configuration>
6 修改hdfs-site.xml(设置备份数量,由于我们有两个datanode,所以设置为2)
<configuration> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/hadoop-2.8.5/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/hadoop-2.8.5/tmp/dfs/data</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>slaver1:9001</value> </property> </configuration>
7 修改mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
8 修改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> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property> </configuration>
9 修改slaves
[root@master hadoop]# cat slaves
slaver1
slaver2
10 将配置好的hadoop复制到另外两台机器上,并为两台slave配置hadoop环境变量
sudo scp -r hadoop-3.1.3 root@slaver1:/usr/local/hadoop/
sudo scp -r hadoop-3.1.3 root@slaver2:/usr/local/hadoop/
chown -R hadoop:hadoop hadoop-3.1.3/
11 在master上初始换hadoop,并启动hadoop
hadoop namenode –format 初始话namenode
cd $HADOOP_HOME/sbin;./start-all.sh
遇到的问题及解决办法
1 datanode节点日志报错如下:
WARN org.apache.hadoop.ipc.Client: Failed to connect to server: master/10.12.1.170:9000: retries get failed due to exceeded
maximum allowed retries number: 10
可以用telnet测试:telnet master 9000
报错:无法连接master。防火强未关闭,telnet测试
telnet master 9000 发现不通,查看是防火墙未关闭,可以关闭防火墙,或者开放9000端口
2 执行 hadoop fs -ls / 有以下警告信息
Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
解决办法:
vi /usr/local/hadoop/hadoop-2.8.5/etc/hadoop/hadoop-env.sh
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"