

tar -zxvf hadoop-2.7.1.tar.gz -C /usr/local # 将hadoop安装到/usr/local目录下

/usr/local/hadoop-2.7.1/bin/hadoop version # 因为没有设置软链接,所以只能通过bin来查看
Hadoop 2.7.1
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 15ecc87ccf4a0228f35af08fc56de536e6ce657a
Compiled by jenkins on 2015-06-29T06:04Z
Compiled with protoc 2.5.0
From source with checksum fc0a1a23fc1868e4d5ee7fa2b28a58a
This command was run using /usr/local/hadoop-2.7.1/share/hadoop/common/hadoop-common-2.7.1.jar

vim /etc/profile
export HADOOP_HOME=/usr/local/hadoop-2.7.1
# PATH在安装jdk时已经设置,这里需要添加上HADOOP的路径
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

# 刷新配置文件
source /etc/profile
# 测试是否生效
hadoop version

先进入haoop的配置文件目录
cd /usr/local/hadoop-2.7.1/etc/hadoop/ #/usr/local/hadoop-2.7.1为我的Hadoop的安装路径

hadoop-env.sh修改文件中的export JAVA_HOME=${JAVA_HOME},将JAVA_HOME设置为你JDK的路径
vim hadoop-env.sh
export JAVA_HOME=/usr/local/java/jdk1.8.0_341

core-site.xmlvim core-site.xml
在文件末尾的之间添加以下内容
注意:这里的地址千万别用外网地址,因为云服务器中只有一块内网网卡,外网地址是服务商分配的
<property>
<name>fs.defaultFSname>
<value>hdfs://192.168.0.109:9000value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/usr/local/hadoop-2.7.1/tmpvalue>
property>
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Wk8xcZR-1669779228261)(../MDimages/Hadoop%E4%BC%AA%E5%88%86%E5%B8%83%E5%BC%8F%E9%9B%86%E7%BE%A4%E9%83%A8%E7%BD%B2_images/image-20221130105228595.png)]](https://1000bd.com/contentImg/2024/04/16/d90445efbf2306a5.png)
hdfs-site.xmlvim hdfs-site.xml
在文件末尾的之间添加以下内容
<property>
<name>dfs.replicationname>
<value>1value>
property>

mapred-site.xml.template文件内容并命名为mapred-site.xml # 拷贝
cp mapred-site.xml.template mapred-site.xml

mapred-site.xmlvim mapred-site.xml
在文件末尾的之间添加以下内容
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>

yarn-site.xmlvim yarn-site.xml
在文件末尾的之间添加以下内容
<property>
<name>yarn.resourcemanager.hostnamename>
<value>192.168.0.109value>
property>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>

# Hadoop启动需要使用很多端口,如果不关闭防火墙会出现无法连接的问题
systemctl stop firewalld
注意:需要root权限才能关闭

hadoop namenode -format

# 启动hdfs
start-dfs.sh
#注意在启动过程要多次输入yes和root的密码

# 查看当前进程
jps

# 启动YARN
start-yarn.sh

# 查看当前进程
jps

当DFS和YARN的进程都启动时,应存在5个进程
ResourceManager
SecondaryNameNode
DataNode
NodeManager
NameNode
启动Hadoop后,通过访问50070端口可以进入HDFS的管理页面

启动Hadoop后,通过访问8088端口可以进入YARN的管理页面


当我启动HDFS服务后发现少了一个NameNode进程,于是查看日志文件发现报BindException ,通过百度发现,原来是因为我在core-site.xml文件中设置的defaultFS值是外网IP,而云服务器只有一块内网网卡,外网IP是设置在云服务提供商的公网网关的,通过NAT技术映射到内网网卡上,所以NameNode无法访问该地址。

解决办法:
将defaultFS值设置为服务器的内网IP
NameNode在第一次格式化失败后,需要删除格式化失败残留文件,才能重新进行格式化
rm -rf /usr/local/hadoop-2.7.1/tmp # 删除hdfs缓存文件
rm -rf /usr/local/hadoop-2.7.1/dfs/name # 删除NameNode缓存目录
rm -rf /usr/local/hadoop-2.7.1/dfs/data # 删除DataNode婚车目录
rm -rf /usr/local/hadoop-2.7.1/logs # 删除日志文件
mkdir -p /usr/local/hadoop-2.7.1/tmp # 创建hdfs缓存文件
mkdir -p /usr/local/hadoop-2.7.1/dfs/name # 创建NameNode缓存目录
mkdir -p /usr/local/hadoop-2.7.1/dfs/data # 创建DataNode婚车目录
mkdir -p /usr/local/hadoop-2.7.1/logs # 创建日志目录
hadoop namenode -format