龙空技术网

「大数据」Hadoop 3.x 单机安装图文详解教程分享

架构思考 203

前言:

今天兄弟们对“pythonlxmlxpath”大约比较珍视,同学们都需要知道一些“pythonlxmlxpath”的相关内容。那么小编在网摘上收集了一些对于“pythonlxmlxpath””的相关文章,希望各位老铁们能喜欢,各位老铁们快快来了解一下吧!

本篇基于 Hadoop 3.x 版本进行安装,安装前可以查看之前的文章《「大数据」万字图文详解 Hadoop 1.0 2.0 3.0 架构的异同!》 ,了解 3.x 版本有哪些部分组成。欢迎阅读~

Hadoop的安装其实不难,但对于新手小白来说是一道不低的门槛,尤其是对于Linux环境不熟悉的小白,而且我发现网上几乎没有特别详细的教程,坑太多,会让新手走很多弯路,甚至折腾好几天都装不好,非常打击学习热情。

因此我想出一个尽量详细的Hadoop安装教程,希望能帮助新手小白顺利安装并运行Hadoop。本教程使用CentOS 7.0 64位操作系统,请自行下载安装VMware虚拟机和CentOS操作系统。

一、创建hadoop用户

打开终端,输入su root,按回车,输入root密码以root用户身份登录。登录成功后,输入useradd -m hadoop -s /bin/bash,创建用户名为hadoop的新用户,使用/bin/bash作为shell。

输入passwd hadoop,修改hadoop用户的密码,按照提示输入两次。

为了避免一些比较棘手的权限问题,方便我们后续的操作,这里需要为hadoop用户增加管理员权限,输入visudo,会打开一个文本文件,找到root ALL=(ALL) ALL这一行,大概是在第100行上下,我们可以按esc键,再按冒号,输入100,即按了esc后输入:100,再按回车,让光标跳转至文本的第100行,然后按a键进入insert插入模式,在root ALL=(ALL) ALL下面加一行hadoop ALL=(ALL) ALL,如图所示。

添加完成后,按一下esc键,然后输入:wq,回车,保存当前文本内容并退出。

最后重启当前系统,用刚创建hadoop用户进行登录。(我这里当前已经是hadoop用户,且登录了root用户,这里直接执行exit推出root用户状态即可。)

二、安装SSH、配置SSH免密登录

一般来说CentOS是默认安装了SSH client和SSH server的,可以输入如下命令查看:

rpm -qa | grep ssh

如果返回的结果包含了SSH client和SSH server,如下图所示,则不需要再安装了。

若需要安装则输入如下两条命令:

sudo yum install openssh-clientssudo yum install openssh-server

注意在安装过程中会提示你输入[y/n],我们输入y即可。

然后执行如下命令检测SSH是否可用:

ssh localhost

如图所示,SSH首次登录会有如此提示,输入yes,然后按照提示输入刚才设置的hadoop用户的密码。

确定可以正常登录后,输入exit退出。接下来要配置ssh免密登录,这样我们每次登录的时候就不用重复输入密码,方便后续操作。

这里需要输入四条命令,我们看下面这张图。

输入cd ~/.ssh/,进入hadoop用户的ssh目录。

输入ssh-keygen -t rsa生成密钥,会出现一些提示,这里我们要连续按四次回车,直到它出现一个如下图所示的框框。

输入cat id_rsa.pub >> authorized_keys加入授权。

输入chmod 600 ./authorized_keys修改文件权限。

完成以上四步以后,我们再输入ssh localhost命令验证一下,可以看到现在无需密码就可以直接登录了。

三、安装Java环境

CentOS系统中是有自带JDK的,我们可以输入rpm -qa | grep java查看。

输入命令java –version查看当前Java版本。

如果没有输出JDK版本号,而是说没有这个命令,那么就说明没有JDK。但是就算出现了上图的版本号输出,这个系统自带的JDK在后面安装Hadoop的时候是不可用的,Hadoop会显示说无法识别,所以我们要重新安装一个JDK。

这里选择1.7版本或1.8版本都可以,你喜欢咯,Hadoop在1.7下运行是没有问题的。

输入sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel安装JDK。

在安装过程中可能会有提示让你输入密码的,或者让你输入y/n的,输入y即可。

看到Complete就完成了。

接着需要配置环境变量。

输入vim ~/.bashrc,我们在.bashrc中进行环境变量设置。

进入文本后,在 # User specific aliases and functions下面加上如下一行:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk,这里的JAVA_HOME的值是当前JDK的安装位置。添加上后就:wq保存退出。

输入source ~/.bashrc,让刚才的变量设置生效。

完成以上操作后,我们输入如下两个命令:

java -version

$JAVA_HOME/bin/java –version

如下图所示,两个命令的输出结果一样,就没有问题。

如上,Java运行环境就安装好了。

四、安装Hadoop3

这是Hadoop的下载地址,本教程选择了最新的3.3.4版本,在网页中选择hadoop-3.3.4.tar.gz,这个是编译好的文件,hadoop-3.3.4-src.tar.gz这个是Hadoop源代码,用不了的。如果你用的不是3.3.4版本,则将所有命令中出现的3.3.4更改为你所使用的版本。

我这里是通过浏览器下载的,系统会默认保存在Downloads目录下。

当前是在root下,所以先用su hadoop命令切换到hadoop下,输入如下命令:

sudo tar -zxf ~/Downloads/hadoop-3.3.4.tar.gz -C /usr/local

这条命令是把Hadoop解压到/usr/local/目录下,可以输入cd /usr/local/跳转到/usr/local目录下,再输入ls命令查看当前目录下的所有文件,如下图所示,可以在目录下看到我们的Hadoop。

输入命令sudo mv ./hadoop-3.3.4/ ./hadoop,为方便后续操作,我们把hadoop文件夹名改得简洁一点。

输入命令sudo chown -R hadoop:hadoop ./hadoop,修改文件权限。

输入cd /usr/local/hadoop进入hadoop目录。

输入./bin/Hadoop version,查看Hadoop版本信息,如果版本信息能正常输出,如下图所示,说明Hadoop可以使用了。

五、Hadoop单机配置(非分布式)

Hadoop默认模式就是非分布式模式,无需进行任何配置操作就能运行。下面我运行一个例子来玩一下。

在/usr/local/hadoop/目录下输入./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar,这个命令可以查看Hadoop附带的所有的例子。

下面我们演示一个grep例子。

输入cd /usr/local/hadoop进入这个目录。

输入mkdir ./input创建input文件夹。

创建文件夹后可以输入ls命令查看文件夹是否创建成功。如下图所示。

如上图所示,查看/etc/hadoop/目录下的文件。

回到/usr/local/hadoop目录,输入cp ./etc/hadoop/*.xml ./input,将刚才/etc/hadoop/目录下的所有xml文件全部拷贝到input文件夹里,作为待会运行案例的输入。

输入命令./bin/hadoopjar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jargrep ./input ./output 'dfs[a-z.]+'

这个是把input文件夹里的所有文件作为输入,筛选文件当中符合正则表达式dfs[a-z.]+的单词并统计它的出现次数,把最终结果输出到output文件夹中。

按回车后Hadoop就开始运行了,这里它会输出很多与当前作业相关的信息,最后出现如下图所示的结果。然后输入cat ./output/*查看运行结果,如下图所示。

注意,Hadoop 默认不会覆盖结果文件,运行程序时输出目录是不能存在的,因此再次运行上面实例会提示出错,需要先将 ./output 删除。

输入rm –r ./output命令将ouput文件夹删除。

六、Hadoop伪分布式配置

首先要设置Hadoop环境变量,输入vim ~/.bashrc进入文本,添加如下代码。

# Hadoop Environment Variablesexport HADOOP_HOME=/usr/local/hadoopexport HADOOP_INSTALL=$HADOOP_HOMEexport HADOOP_MAPRED_HOME=$HADOOP_HOMEexport HADOOP_COMMON_HOME=$HADOOP_HOMEexport HADOOP_HDFS_HOME=$HADOOP_HOMEexport YARN_HOME=$HADOOP_HOMEexport HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/nativeexport PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

代码片段:可切换语言,无法单独设置文字格式

wq退出后输入source ~/.bashrc让配置生效。

#输入vim ./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>
#输入vim ./etc/Hadoop/hdfs-site.xml,在<configuration></configuration>中添加如下代码。<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>

代码片段:可切换语言,无法单独设置文字格式

输入./bin/hdfs namenode –format,执行namenode的格式化。

又会输出一大堆东西,只要找到successfully formatted就说明格式化成功了。

接着输入./sbin/start-dfs.sh启动主角色NameNode、从角色DataNode和主角色辅助角色SecondaryNameNode。

注意,这里可能会显示权限问题报错,导致你的Hadoop启动失败,这个就是前面ssh免密没配置好,回去重新做一遍就好了。

3个线程开启后,我们输入jps命令查看当前的进程,可以看到NameNode、DataNode和SecondaryNameNode,说明启动成功了。

再输入./sbin/start-yarn.sh,启动YARN的主角色ResourceManager和从角色NodeManager。

输入jps命令查看,如下图有这六个就没有问题了。

成功启动后,我们打开系统自带的浏览器访问,这里可以查看各个工作节点的信息,查看HDFS文件,注意端口号不一定是9870,有些教程写的就不是9870,可能跟版本有关系,这里如果出了问题自行百度。

七、运行Hadoop伪分布式实例

上面那个实例我们搞的是单机模式,现在伪分布配置好了我们来玩一下。

输入./bin/hdfs dfs -mkdir -p /user/hadoop,先创建一个用户名目录。

输入./bin/hdfs dfs -mkdir input,创建input目录待会存放输入文件。

输入./bin/hdfs dfs -put ./etc/hadoop/*.xml /user/hadoop/input,把./etc/hadoop/中的xml文件复制到分布式文件系统的input中。

上面这三个命令会出现警告,不用管它。

输入./bin/hdfs dfs -ls input,查看一下刚才拷过来的文件。

输入./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+',这个是把input文件夹里的所有文件作为输入,筛选文件当中符合正则表达式dfs[a-z.]+的单词并统计它的出现次数,把最终结果输出到output文件夹中。

和刚才玩单机模式时一样会输出一堆东西,都是与当前运行的作业程序相关的信息。

等作业执行完后,输入./bin/hdfs dfs -cat output/*,查看运行结果。

单机模式与伪分布式的不同在于,单机模式是从本地读取文件的,而伪分布式是通过HDFS分布式文件管理系统读取文件。

八、YARN配置

Yarn是负责资源管理与任务调度的,刚才我们已经启动了,这里还需要修改一些配置。

输入cd /usr/local/hadoop/etc/hadoop,跳转目录。

输入vim mapred-site.xml,编辑这个文件,插入如下代码。

<configuration>    <property>        <name>mapreduce.framework.name</name>        <value>yarn</value>    </property></configuration>

代码片段:可切换语言,无法单独设置文字格式

输入vim yarn-site.xml,编辑这个文件,插入如下代码。

<configuration>    <property>        <name>yarn.nodemanager.aux-services</name>        <value>mapreduce_shuffle</value>        </property></configuration>

代码片段:可切换语言,无法单独设置文字格式

输入./sbin/mr-jobhistory-daemon.sh start historyserver,开启历史服务器,方便后续在Web中查看任务运行情况。

打开浏览器,访问,在这里可以查看作业运行情况。

可以输入./bin/hdfs dfs -rm -r output,把刚才运行输出结果文件夹output删掉,然后再跑一边看看网页上的变化。

像现在这样在单机上开启yarn其实没啥意义,反而会让程序更慢,不启动yarn是完全没问题。如果不想启动yarn,可以把mapred-site.xml 文件重命名为mapred-site.xml.template,命令为 mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml。

关闭yarn的命令如下:

./sbin/stop-yarn.sh./sbin/mr-jobhistory-daemon.sh stop historyserver
九、环境变量

上面的教程中,我们都是先进入到 /usr/local/hadoop 目录中,再执行 ./sbin/hadoop,实际上等同于运行 /usr/local/hadoop/sbin/hadoop。

其实在前面我们设置 HADOOP 环境变量时,我们已经顺便设置了 PATH 变量(即 "export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin"),那么以后我们在任意目录中都可以直接通过执行 start-dfs.sh 来启动 Hadoop 或者执行 hdfs dfs -ls input 查看 HDFS 文件了,这样后续操作起来会更方便。

文章来源:×tamp=1693574301&ver=4748&signature=TCLZvUAEAAyzb7dobrEIemqLqnBaxmJpVZLXjH5KMSXnwzMMPQaJ5jFVgYtP1gL3*q3hwH9AM4EGbzBZ4dy5pUfDNPsgPoeNJ*AYctwTyMvcAlqgZddMLxEtN6XVQMdQ&new=1

标签: #pythonlxmlxpath