Ubuntu搭建Hadoop伪分布式集群全套流程详解

创建hadoop用户
sudo useradd -m hadoop -s /bin/bash  # 创建新用户
sudo passwd hadoop  # 为新用户设置密码
sudo adduser hadoop sudo  # 为新用户设置权限
su hadoop  # 切换到新用户
sudo apt-get update

配置ssh无密码登录

集群,单节点模式都需要用到ssh登录,默认ubuntu上面已经有ssh client,还需要安装ssh server
之后的操作如何各种输入密码就很麻烦,所以我们配置不需要密码登录

sudo apt-get install openssh-server
exit

ssh-keygen -t rsa  # 全部按enter就可以了
cat ./id_rsa.pub >> ./authorized_keys  # 加入授权

这个时候再用ssh localhost就不需要输入密码了。


Java环境搭建

我们使用hadoop3.1.3版本需要JDK1.8版本以上,这里我们推荐手动下载tar.gz安装包来手动安装。

cd /usr/lib
sudo mkdir jvm #创建/usr/lib/jvm目录用来存放JDK文件
sudo tar -xzvf /home/hadoop/jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm

设置环境变量:

vim ~/.bashrc

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

source ~/.bashrc
java -version

安装Hadoop 3.1.3
https://mirrors.bfsu.edu.cn/apache/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz
sudo tar -zxvf hadoop-3.1.3.tar.gz  -C /usr/local/
cd /usr/local/
sudo mv ./hadoop-3.1.3/ ./hadoop
sudo chown -R hadoop ./hadoop  # 修改文件权限

./bin/hadoop version  # 最后查看是否安装成功

Hadoop单机配置(这个不是分布式)

单机模式不需要修改任何配置
我们可以执行一些他自带的例子来试运行hadoop,我们选择运行grep例子,将input文件夹中文件作为输入,筛选统计单词出现的次数,将结果输入到output文件夹中。

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

最后我们能看到符合正则的单词dfsadmin出现了1次


Hadoop伪分布式配置

Hadoop可以单节点上以伪分布式的方式运行,Hadoop进程以分离的java进程来运行,节点既是NameNode也是DataNode,读取的是HDFS中的文件

现在我们来修改Hadoop的配置文件以支持伪分布式,配置文件在./etc/hadoop目录下

  1. 修改core-site.xml
<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>
  1. 修改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>

如果需要从伪分布式模式切换回非分布式模式,需要删除core-site.xml 中的配置项

然后我们需要进行格式化:

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

然后我们看到下面的结果就证明格式化成功了
在这里插入图片描述
开启NameNode和DataNode守护进程:./sbin/start-dfs.sh
也可以使用./sbin/start-all.sh来启动所有组件,然后用jps来check是否启动成功:
在这里插入图片描述
启动成功后我们可以访问web界面: http://localhost:9870 查看界面或者在线查看HDFS中的文件

我们有三种方式来执行hadoop命令:

hadoop fs  # 适用于任何不同的文件系统
hadoop dfs  # 只适用于HDFS文件系统
hdfs dfs  # 和上面一样

运行Hadoop伪分布式实例

单机模式运行grep实例读取的是本地数据,伪分布式读取的是HDFS上面的数据,首先创建用户目录:
./bin/hdfs dfs -mkdir -p /user/hadoop
我们需要将之前使用的文件作为输入文件复制到HDFS中:

./bin/hdfs dfs -mkdir input
./bin/hdfs dfs -put ./etc/hadoop/*.xml /user/hadoop/input

查看文件列表:./bin/hdfs dfs -ls input
然后我们计算:./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input output 'dfs[a-z.]+'
查看运行结果,这个是看的是位于HDFS中的结果:./bin/hdfs dfs -cat output/*

这里需要注意的是:Hadoop运行程序时,输出目录不能存在,否则会报错,如果要再次执行需要删除output文件夹
./bin/hdfs dfs -rm -r output

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值