Ubuntu18.04搭建Hadoop3.0.3

Ubuntu18.04搭建Hadoop3.0.3

1. 创建hadoop用户

首先确保在root账号下,创建一个hadoop用户

sudo useradd -m hadoop -s /bin/bash

设置密码

sudo passwd hadoop

增加管理员权限

sudo adduser hadoop sudo

使用su hadoop即可进行切换

2. 安装SSH

sudo apt install openssh-server

安装后即可使用ssh localhost进行登录,首次登录需要密码,输入刚刚设置的密码即可

设置免密码登录

先退出刚刚的登录:exit

切换到ssh目录:cd ~/.ssh/

输入以下命令。然后一路回车

ssh-keygen -t rsa

进行授权

cat ./id_rsa.pub >> ./authorized_keys

配置完即可使用ssh localhost进行免密登录

3. 安装Java

省略

4. 安装Hadoop

下载Hadoop,可以点击此链接进行下载hadoop-3.0.3.tar.gz

下载完安装到/usr/local

sudo tar -zxf ~/Downloads/hadoop-3.0.3.tar.gz -C /usr/local  
cd /usr/local/
sudo mv ./hadoop-3.0.3/ ./hadoop  
sudo chown -R hadoop ./hadoop     

可以使用以下命令查看是否安装成功

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

4.1 单机模式配置

先把java的路径配置到hadoop上

sudo vi ./etc/hadoop/hadoop-env.sh

插入export JAVA_HOME=/usr/local/jdk1.8.0_181,路径可变

解压后默认就是单机的配置,可以运行以下的例子

cd /usr/local/hadoop
mkdir ./input
cp ./etc/hadoop/*.xml ./input
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.3.jar grep ./input/ ./output 'dfs[a-z.]+'
cat ./output/*

如果没有报错的话最后的输出如下

1      dfsadmin

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

4.2 伪分布式配置

修改配置文件core-site.xml

sudo vi ./etc/hadoop/core-site.xml

修改为

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/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

sudo vi ./etc/hadoop/hdfs-site.xml

修改为

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

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

./bin/hdfs namenode -format

此命令只需要执行一次

接着启动hdfs

./sbin/start-dfs.sh

如果出现以下警告

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

则需要修改hadoop-env.sh文件

sudo vi ./etc/hadoop/hadoop-env.sh

然后插入以下内容

export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"

启动后我们可以运行jps命令查看端口信息

31253 SecondaryNameNode
30789 NameNode
31382 Jps
30974 DataNode

证明运行成功

4.3 运行Hadoop伪分布式实例

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

最后可以看到input文件夹里面的文件

运行实例

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.3.jar grep input output 'dfs[a-z.]+'

如果一切正常运行,结束后执行命令

./bin/hdfs dfs -cat output/*

将得到以下内容

1	dfsadmin
1	dfs.replication
1	dfs.namenode.name.dir
1	dfs.datanode.data.dir

若出现以下报错,则需要修改权限

Permission denied: user=root, access=WRITE,inode="/user":hadoop:supergroup:drwxr-xr-x

解决方法(需要配置Hadoop的环境变量)

hadoop fs -ls
hadoop fs -chmod 777 /user

若还出现以下错误

Permission denied: user=root, access=WRITE, inode="/user/hadoop":hadoop:supergroup:drwxr-xr-x

这个错误说明了我们不能写文件进入hdfs,所以需要修改hdfs-site.xml
增加以下的内容

<property>
    <name>dfs.permissions</name>
    <value>false</value>
</property>

然后重启hdfs,再次运行实例如果遇到以下错误

Name node is in safe mode

在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。

所以只需要停掉安全模式即可,运行以下命令

./bin/hadoop dfsadmin -safemode leave

用户可以通过dfsadmin -safemode value 来操作安全模式,value的值如下

  • enter - 进入安全模式
  • leave - 强制NameNode离开安全模式
  • get - 返回安全模式是否开启的信息
  • wait - 等待,一直到安全模式结束。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值