Hadoop配置安装指南

Hadoop安装

环境:虚拟机
centOS 7

OpenJDK 1.8.0

Hadoop 3.x

1.创建Hadoop用户

1.1添加用户

sudo useradd -m hadoop -s /bin/bash

1.2设置密码

# su 切换root用户,根据提示输入root密码
su 
# 更改密码
sudo echo "密码" | passwd --stdin hadoop

1.3添加权限

sudo vi /etc/sudoers

输入i变为插入模式,在 root ALL=(ALL) ALL 下面添加 Hadoop ALL=(ALL) ALL,然后点击ESC转换命令模式,输入 wq !保存

1.4更新软件

yum update

2.安装SSH、配置SSH无密码登陆

2.1安装SSH Server

集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令)

sudo yum install openssh-server

2.2尝试ssh登陆

切换hadoop用户,su hadoop,然后输入设置的hadoop的密码。

# 尝试登陆
ssh localhost

此时会有如下提示(SSH首次登陆提示),输入 yes 。然后按提示输入密码 hadoop,这样就登陆到本机了。

2.3生成密钥加入到授权

首先输入exit退出刚刚ssh登陆状态

 # 若没有该目录,请先执行一次ssh localhost
cd ~/.ssh/ 
# 会有提示,都按回车就可以
ssh-keygen -t rsa
# 加入授权
cat ./id_rsa.pub >> ./authorized_keys

然后su hadoop切换为hadoop用户,此时你使用 ssh localhost 命令尝试,如果直接登陆说明正常,如果需要密码的话说明刚刚授权点问题。

解决授权问题

# 修改.ssh权限
sudo chmod 700 ~/.ssh
# 修改文件”authorized_keys”权限
sudo chmod 600 ~/.ssh/authorized_keys
# 重启ssh服务
service sshd restart

此时再尝试ssh localhost登陆应该就不需要密码了。

2.4安装java

可以使用yum来安装,也可以通过下载java安装包来进行编译安装。推荐使用yum命令安装。

yum -y install java-1.8.0-openjdk-devel.x86_64

安装成功后查看安装的文件,如果看到类似我这种结果就证明安装成功

在 hadoop用户下,输入

vim ~/.bashrc

在打开的文件开头位置添加下面内容。

# java
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

然后输入命令使配置生效

source ~/.bashrc

最后尝试输入下面命令,看看是否成功配置。

java -version
echo $JAVA_HOME
echo $JRE_HOME
$jAVA_HOME/bin/java -version

3.安装Hadoop

3.1下载Hadoop

Hadoop版本也挺多的,可以看网上对不同版本的介绍,然后下载对应的版本。

可以通过 http://mirror.bit.edu.cn/apache/hadoop/common/ 或者 http://mirrors.cnnic.cn/apache/hadoop/common/ 下载,,一般选择下载最新的稳定版本,即下载 “stable” 下的tar.gz 这个格式的文件,这是编译好的,另一个包含 src 的则是 Hadoop 源代码,需要进行编译才可使用。

可以直接使用wget命令直接下载,或者打开浏览器进行下载等方式。

这里我们安装最新版

wget http://mirror.bit.edu.cn/apache/hadoop/common/stable/hadoop-3.2.1.tar.gz

3.2安装Hadoop

安装Hadoop到/usr/local目录

# 解压到/usr/local中
sudo tar -zxf ./hadoop-3.2.1.tar.gz -C /usr/local
cd /usr/local/
# 将文件夹名改为hadoop
sudo mv ./hadoop-3.2.1/ ./hadoop
# 修改文件权限
sudo chown -R hadoop ./hadoop       

Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:

cd /usr/local/hadoop
./bin/hadoop version

4.Hadoop配置

4.1安装模式介绍

Hadoop的安装方式有三种,分别是单机模式,伪分布式模式,分布式模式。

  • 单机模式:单机模式:Hadoop 默认模式为非分布式模式(本地模式),无需进行其他配置即可运行。非分布式即单 Java 进程,方便进行调试。
  • 伪分布式模式:Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。
  • 分布式模式:使用多个节点构成集群环境来运行Hadoop。

4.2单机配置(非分布式)

Hadoop 默认模式为非分布式模式(本地模式),无需进行其他配置即可运行。非分布式即单 Java 进程,方便进行调试。

现在我们可以执行例子来感受下 Hadoop 的运行。Hadoop 附带了丰富的例子(运行 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar 可以看到所有例子),包括 wordcount、terasort、join、grep 等。

在此我们选择运行 grep 例子,我们将 input 文件夹中的所有文件作为输入,筛选当中符合正则表达式 dfs[a-z.]+ 的单词并统计出现的次数,最后输出结果到 output 文件夹中。

cd /usr/local/hadoop
mkdir ./input
cp ./etc/hadoop/*.xml ./input   # 将配置文件作为输入文件
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'
cat ./output/*          # 查看运行结果

执行成功后如下所示,输出了作业的相关信息,输出的结果是符合正则的单词 dfsadmin 出现了1次

注意:Hadoop 默认不会覆盖结果文件,因此再次运行上面实例会提示出错,需要先将 ./output 删除。

4.3伪分布式配置

Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。

Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xmlhdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。

修改配置文件 core-site.xml (通过 gedit 编辑会比较方便: vi ./etc/hadoop/core-site.xml),将当中的

<configuration>
</configuration>

修改为下面的配置:

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

同样的,修改配置文件 hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
</configuration>

配置完成后,执行 NameNode 的格式化:

cd /usr/local/hadoop
./bin/hdfs namenode -format

看到这个消息说明配置成功。

Hadoop配置文件说明

Hadoop 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件),因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项。

此外,伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(官方教程如此),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。

接着开启 NameNode 和 DataNode 守护进程。

cd /usr/local/hadoop
#start-dfs.sh是个完整的可执行文件,中间没有空格
./sbin/start-dfs.sh  

web页面访问:输入localhost:9870

注意:Hadoop3以后将端口修改为9870,并非以前的50070.

参考教程:http://dblab.xmu.edu.cn/blog/install-hadoop/

发布了80 篇原创文章 · 获赞 55 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/cong____cong/article/details/104826730
今日推荐