Ubuntu Hadoop伪分布式搭建

    xiaoxiao2023-03-25  4

    系统:Ubuntu16.04 JDK:JDK1.8.0_101 Hadoop:2.7.3

    JDK安装路径:/usr/lib/jdk/jdk1.8.0_101 Hadoop安装路径:/usr/lib/hadoop

    首先我们要新建一个叫hadoop的账户

    sudo adduser hadoop

    之后会提示你输入密码等信息

    然后我们为这个账户添加sudo权限(这样在后续的操作中可以方便些),编辑/etc/sudoers

    sudo vim /etc/sudoers

    root ALL=(ALL:ALL) All

    下面添上

    hadoop ALL=(ALL:ALL) ALL

    保存退出,

    注:编辑/etc/sudoers文件可能需要有写入权限可用root权限对其添加(chmod a+w /etc/sudoers),在编辑完成后需要将写入权限去掉(chmod a-w /etc/sudoers)

    完成这一步之后我们切换用户用新创建的hadoop账户登陆

    然后我们需要对用户添加ssh免密码登陆

    ssh-keygen -t rsa

    就会在~/.ssh路径下面生成id_rsa.pub文件,把这个文件的内容复制到~/.ssh目录下面的authorized_keys

    cp ~/.ssh/id_rsa.pub ~/.sh/authorized_keys

    然后编辑/etc/ssh/sshd_config文件,开启免密码登陆

    sudo vim /etc/ssh/sshd_config

    #AuthorizedKeysFile %h/.ssh/authorized_keys

    前的#去掉,就开启了免密码登陆,保存退出 重启ssh服务

    sudo service ssh restart

    验证免密码登陆是否有效,

    ssh hadoop@localhost

    第一次登陆会让你输入yes/no输入yes,回车,如果没有提示输入密码,那就说明免密码登陆已经奏效。

    由于Hadoop是由java编写的所以在安装hadoop之前需要先搭建jdk的环境,将jdk解压缩

    sudo tar -zxvf jdk-8u101-linux-x64.tar.gz -C /usr/lib/jdk

    然后配置jdk环境,在/etc/profile加上

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

    保存 source /etc/profile重新加载

    java -version

    输出了java的版本号,说明配置成功

    然后我们把hadoop解压缩到/usr/lib目录下

    sudo tar -zxvf hadoop-2.7.3.tar.gz -C /usr/lib

    然后对其重命名

    sudo mv /usr/lib/hadoop-2.7.3 /usr/lib/hadoop

    我们需要给hadoop用户对/usr/lib/hadoop目录的写入权限

    接着我们需要修改hadoop的一些配置文件让它支持伪分布式, 首先我们需要修改hadoop/etc/hadoop/hadoop-env.sh

    vim /usr/lib/hadoop/etc/hadoop/hadoop-env.sh

    找到 JAVA_HOME 应该在文件开头,把里面的内容修改成

    export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_101

    保存退出(如果这里没有设置,即便在/etc/profile中设置了,在运行的时候还是会提示JAVA_HOME not set)

    接着修改core-site.xml文件

    vim /usr/lib/hadoop/etc/hadoop/core-site.xml

    打开之后

    <configuration> </configuration>

    在<configuration></configuration>中间添加

    <property> <name>hadoop.tmp.dir</name> <value>file:/usr/lib/hadoop/tmp</value> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property>

    保存退出

    然后修改hdfs-site.xml

    vim /usr/lib/hadoop/etc/hadoop/hdfs-site.xml

    同样在<configuration></configuration>中添加

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

    保存退出

    然后执行

    /usr/lib/hadoop/bin/hdfs namenode -format

    开启namenode和datanode

    /usr/lib/hadoop/sbin/start-dfs.sh

    启动完成之后执行jps

    可以看到

    NameNode DataNode Jps SecondaryNameNode

    这几个进程,如果不是说明配置有问题

    接下来可以测试一下,看看hadoop有没有正常运行

    /usr/lib/hadoop/bin/hadoop dfs -mkdir input

    创建input目录

    /usr/lib/hadoop/bin/hadoop dfs -put /usr/lib/hadoop/etc/hadoop/*.xml input

    这样会把/usr/lib/hadoop/etc/hadoop/目录下所有的xml文件都存放到新建的hdfs的input目录下

    可以通过命令

    /usr/lib/hadoop/bin/hadoop dfs -ls input

    来进行查看

    然后我们执行example

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

    用命令

    /usr/lib/hadoop/bin/hdfs dfs -cat output/*

    对运行结果进行查看

    1 dfsadmin 2 dfs.replication 3 dfs.namenode.name.dir 4 dfs.datanode.data.dir
    转载请注明原文地址: https://ju.6miu.com/read-1203749.html
    最新回复(0)