阿里云ECS服务器上hadoop安装(单机)
环境说明:
jdk 1.8.0_181
系统:GentOs 7
准备工作
修改系统hostname
- 修改hostname
[root@aliyunhost sysconfig]# cd /etc/sysconfig/
[root@aliyunhost sysconfig]# cat network
# Created by anaconda
NETWORKING_IPV6=no
PEERNTP=no
NETWORKING=yes
HOSTNAME=aliyunhost
以上,修改HOSTNAME为我们自定义的hostname,之后,修改host映射
[root@aliyunhost hadoop]# cd /etc/
[root@aliyunhost etc]# vim host
host.conf hostname hosts hosts.allow hosts.deny
原本只需要修改hosts,修改后如下:
[root@aliyunhost etc]# cat hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 localhost localhost.aliyunhost
之后重启系统或者网络,发现hostname并未修改成功。
原因是我们发现在/etc目录下,有hostname这个文件,打开看,修改为:
[root@aliyunhost etc]# cat hostname
aliyunhost
- 重启网络配置
[root@aliyunhost etc]# /etc/init.d/network restart
Restarting network (via systemctl): [ OK ]
3.用户推出后重新连接,查看hostname
[root@aliyunhost etc]# hostname
aliyunhost
至此,本地host修改和配置完成
创建hadoop安装目录,数据目录
mkdir /usr/local/webserver/hadoop
mkdir /data/hadoop/temp
mkdir /data/hadoop/name
mkdir /data/hadoop/data
创建hadoop用户并授权以上目录
groupadd hadoop
useradd hadoop -g hadoop -p hadoop
chown -R hadoop:hadoop /usr/local/webserver/hadoop
chown -R hadoop:hadoop /data/hadoop
hadoop安装
## 下载
cd usr/local/webserver/hadoop
wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-3.1.1/hadoop-3.1.1.tar.gz
## 解压
tar -zxvf hadoop-3.1.1.tar.gz
hadoop配置(5个配置文件)
进入目录:hadoop-3.1.1/etc/hadoop
1. 文件1:
vim hadoop-env.sh
在文件顶部,加入配置(jdk安装目录根据自己实情):
export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64
- 文件2:
vim core-site.xml
文件内容如下:
<configuration>
<!-- 指定fs缺省名称 -->
<property>
<name>fs.default.name</name>
<value>hdfs://aliyunhost:9000</value>
</property>
<!-- 指定HDFS老大(namenode)的通信地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://aliyunhost:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/temp</value>
</property>
</configuration>
- 文件3:
vim hdfs-site.xml
文件内容如下:
<configuration>
<!-- 指定hdfs副本数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/data/hadoop/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/data/hadoop/data</value>
</property>
<property>
<name>dfs.datanode.http.address</name>
<value>aliyunhost:9864</value>
</property>
</configuration>
- 文件4:
vim mapred-site.xml
文件内容如下:
<configuration>
<!-- 指定使用yarn框架 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn></value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>aliyunhosst:9902</value>
</property>
</configuration>
- 文件5:
vim yarn-site.xml
文件内容如下:
<configuration>
<property>
<!-- 指定resourceManager地址 -->
<name>yarn.resourcemanager.hostname</name>
<value>aliyunhost</value>
</property>
<!-- reduce获取数据方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
- 此处增加hadoop环境变量配置
vim /etc/profile
文件配置内容如下:
export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64
export HADOOP_HOME=/usr/local/webserver/hadoop/hadoop-3.1.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
以上,hadoop配置告一段落
hadoop启动
- namenode格式化
因为已配置hadoop环境变量,直接执行以下命令
hadoop namenode -format
- 启动
start-dfs.sh
出现以下错误:
Last login: Thu Aug 23 14:17:40 CST 2018 from 124.89.85.202 on pts/0
aliyunhost: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
Starting datanodes
HDFS是分布式系统,所以启动HDFS时,会启动配置的各个服务器节点,包括本机,在启动过程中是通过ssh远程操作的,需要配置免密登录,执行以下命令:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
再次执行start-dfs.sh,执行jps命令
1669 NameNode
11061 Jps
1782 DataNode
1959 SecondaryNameNode
说明启动成功,此时执行命令netstat -nltp
[root@aliyunhost hadoop]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:9867 0.0.0.0:* LISTEN 1782/java
tcp 0 0 0.0.0.0:9900 0.0.0.0:* LISTEN 10729/nginx: master
tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 10729/nginx: master
tcp 0 0 0.0.0.0:9868 0.0.0.0:* LISTEN 1959/java
tcp 0 0 0.0.0.0:9870 0.0.0.0:* LISTEN 1669/java
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 29075/sshd
tcp 0 0 127.0.0.1:40547 0.0.0.0:* LISTEN 1782/java
tcp 0 0 0.0.0.0:9864 0.0.0.0:* LISTEN 1782/java
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1669/java
tcp 0 0 0.0.0.0:9866 0.0.0.0:* LISTEN 1782/java
以上我们配置了端口9864,这是hadoop提供的web页面端口,浏览器打开http://host:9864
总结:第一次安装,过程中坑比较多,主要是明白配置的文件中内容的含义,这样更容易解决问题。