Hadoop伪分布式环境搭建

实验题目:Hadoop单机伪分布式环境搭建及WordCount程序测试

实验硬件环境:

​ Intel i5-8250u 1.6GHz

​ RAM 8GB ddr4

软件环境:

​ Ubuntu 18.04.1LTS,IDEA,Hadoop 2.7.7

实验步骤:

​ 1、创建hadoop用户(下面的操作均在hadoop用户下完成)

useradd hadoop -s /bin/hash  #创建用户名为hadoop的用户
passwd hadoop                #设置hadoop用户的密码
adduser hadoop sudo          #可选,为了方便后面在hadoop用户下的                                        环境配置

​ 2、安装SSH并配置无密码登录

sudo apt-get install openssh-server

​ 安装成功后,运行下列命令完成配置无密码登录

ssh localhost     #登录ssh,要求输入当前用户的密码
exit               #退出登录
cd ~/.ssh/        #进入.ssh目录
ssh-keygen -t rsa #生成秘钥
cat ./id_rsa.put >> ./authorized_keys#加入授权

​ 完成配置,在尝试登录ssh可以直接免密登录

​ 3、安装JDK

​ 在bashrc文件中添加JDK安装路径

export JAVA_HOME=/usr/lib/jvm/jdk-11.0.2
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

​ 完成后使bashrc生效

source ~/.bashrc
java -version   #查看java版本

图片描述

​ 4、安装Hadoop 2.7.7

​ 从官网下载Hadoop2.7.7(不建议用Hadoop 3.*版本,问题多且论坛解决办法少)

​ 将Hadoop文件解压至/usr/local/hadoop下,配置Hadoop路径

#bashrc后添加如下三行内容
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
#使bashrc生效
source ~/.bashrc
hadoop -version #查看hadoop是否安装成功

图片描述

5、修改配置文件

(1)修改hadoop-env.sh(/usr/local/hadoop/etc/hadoop/)

​ 主要更改JAVA_HOME

export JAVA_HOME=/usr/lib/jvm/jdk-11.0.2

(有的配置文件是$export JAVA_HOME=${JAVA_HOME}),可不更改

(2)修改core-site.xml(/usr/local/hadoop/etc/hadoop/)

<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>

(3)修改hdfs-site.xml(/usr/local/hadoop/etc/hadoop/)

<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>

(4)配置完成,格式化Namenode

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

看到 Storage directory ××× has been successfully formatted. Exiting with status 0表示格式化正确

(5)开启守护进程

/usr/local/hadoop/sbin/start-dfs.sh   #启动
/usr/local/hadoop/sbin/stop-dfs.sh    #关闭

启动完成通过jps查看java进程的状态

图片描述

至此,单机伪分布式集群配置完毕

5、在IDEA上编写并运行MapReduce程序

(1)创建一个Maven项目

(2)在新项目中,依次选择File->Project Structure,在新窗口中选择Project Setting下的Modules,添加一个Module,名称随机。在右侧窗口中选择Dependencies页面,添加JARs or directories,添加的文件主要包括/usr/local/hadoop/share/hadoop/common,

/usr/local/hadoop/share/hadoop/common/lib,

/usr/local/hadoop/share/hadoop/hdfs,

/usr/local/hadoop/share/hadoop/hdfs/lib,

/usr/local/hadoop/share/hadoop/mapreduce,

/usr/local/hadoop/share/hadoop/mapreduce/lib,

/usr/local/hadoop/share/hadoop/tools/lib,

/usr/local/hadoop/share/hadoop/yar/lib下的jar包(建议全部添加)

6、编写MapReduce程序

7、单机运行MapReduce程序

​ (1)依次点击Run->Edit Configuration,增加一个Application的配置,名称随意,MainClass为MapReduce的主程序,Program arguments为运行程序所需要的参数也就是程序的input目录和output目录

​ (2)点击运行即可在单机情况下运行MapReduce程序(在该项目的根目录下会由程序自己创建output文件夹,不需要提前创建,否则会出错)

对”The Story of My Life by Helen Keller.txt”进行WordCount部分结果显示

图片描述

8、利用伪分布式集群运行MapReduce程序

(1)利用IDEA生成jar包

​ 依次点击File->Project Structure,选择Project Setting 下的Artifacts,添加一个JAR。点击OK。

​ 主界面依次点击就Build->Build Artifacts->Build,IDEA将在根目录下生成一个out文件夹,在/out/artifacts/WordCount中为打包好的jar包。

(2)将数据文件上传到HDFS

​ 首先接触HDFS的安全模式

hdfs dfsadmin -safemode leave

​ 查看/user目录下的文件

hdfs dfs -ls /user
#如果提示没有该文件夹可以自己创建
hdfs dfs -mkdir /user

​ 利用-put命令将本地数据文件上传到HDFS

hdfs dfs -mkdir /user/hadoop
hdfs dfs -mkdir /user/hadoop/input#创建input目录
hdfs dfs -put /本地文件路径 /user/input   #上传文件

​ 将IDEA产生的jar包copy到hadoop目录下,利用hadoop运行该jar包

hadoop jar WordCount.jar WordCount input output

​ 运行结束,HDFS产生/user/hadoop/output目录,存放程序运行状态和结果

hdfs dfs -ls /user/hadoop/output

图片描述

​ 利用HDFS指令 -copyToLocal可以下载part-r-00000文件查看程序运行结果。

参考文档:
hadoop搭建具体步骤——第一章(伪分布式)[https://zhuanlan.zhihu.com/p/…]

SSH配置免密码登录后,仍需要输入密码——解决方案[https://blog.csdn.net/xiaoyi3…]

《深入理解大数据——大数据处理与编程实践》

    原文作者:叫我阿杭就好了
    原文地址: https://segmentfault.com/a/1190000018560457
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞