当前位置: 首页 > news >正文

大数据技术--实验01-Hadoop的安装与使用【实测可行】

使用下面表中的软件版本进行配置:

准备好后,按照下面的步骤进行配置。

  1. 配置VMware网络

在VMWare主界面,点击“编辑”>“虚拟网络编辑”菜单进入虚拟网卡参数设置界面。选择VMnet8条目,点击“NAT设置”按钮后可以看到我们的VMWare Workstation为NAT连接的虚拟机设定的默认网关,此处为192.168.222.2,以及子网掩码,此处为255.255.255.0。

2. 准备机器

通过VMware新建一台CentOS 6.4虚拟机,操作系统安装完成后。

熟悉常用的Linux操作

  • cd命令:切换目录
    1)切换到目录“/usr/local

$ cd /usr/local

2)切换到当前目录的上一级目录

$ cd ..

3)切换到当前登录Linux系统的用户的自己的主文件夹

$ cd ~

  • ls命令:查看文件与目录

4)查看目录“/usr”下的所有文件和目录

$ cd /usr

$ ls -al

  • mkdir命令:新建目录

5)进入“/tmp”目录,创建一个名为“a”的目录,并查看“/tmp”目录下已经存在哪些目录

$ cd /tmp

$ mkdir a

$ ls -al

6)进入“/tmp”目录,创建目录“a1/a2/a3/a4

$ cd /tmp

$ mkdir -p a1/a2/a3/a4

  • rmdir命令:删除空的目录

7)将上面创建的目录a(在“/tmp”目录下面)删除

$ cd /tmp

$ rmdir a

8)删除上面创建的目录“a1/a2/a3/a4 (在“/tmp”目录下面),然后查看“/tmp”目录下面存在哪些目录

$ cd /tmp

$ rmdir -p a1/a2/a3/a4

$ ls -al

  • cp命令:复制文件或目录

9)将当前用户的主文件夹下的文件.bashrc复制到目录“/usr”下,并重命名为bashrc1

$ sudo cp ~/.bashrc /usr/bashrc1

10)在目录“/tmp”下新建目录test,再把这个目录复制到“/usr”目录下

$ cd /tmp

$ mkdir test

$ sudo cp -r /tmp/test /usr

  • mv命令:移动文件与目录,或更名

11)将“/usr”目录下的文件bashrc1移动到“/usr/test”目录下

$ sudo mv /usr/bashrc1 /usr/test

12)将“/usr”目录下的test目录重命名为test2

$ sudo mv /usr/test /usr/test2

  • rm命令:移除文件或目录
  • 13)将“/usr/test2”目录下的bashrc1文件删除

$ sudo rm /usr/test2/bashrc1

14)将“/usr”目录下的test2目录删除

$ sudo rm -r /usr/test2

  • cat命令:查看文件内容

15)查看当前用户主文件夹下的.bashrc文件内容

$ cat ~/.bashrc

  • tac命令:反向查看文件内容

16)反向查看当前用户主文件夹下的.bashrc文件的内容

$ tac ~/.bashrc

  • more命令:一页一页翻动查看

17)翻页查看当前用户主文件夹下的.bashrc文件的内容

$ more ~/.bashrc

  • head命令:取出前面几行

18)查看当前用户主文件夹下.bashrc文件内容前20

$ head -n 20 ~/.bashrc

19)查看当前用户主文件夹下.bashrc文件内容,后面50行不显示,只显示前面几行

$ head -n -50 ~/.bashrc

  • tail命令:取出后面几行

20)查看当前用户主文件夹下.bashrc文件内容最后20

$ tail -n 20 ~/.bashrc

21)查看当前用户主文件夹下.bashrc文件内容,并且只列出50行以后的数据

$ tail -n +50 ~/.bashrc

  • touch命令:修改文件时间或创建新文件

22)在“/tmp”目录下创建一个空文件hello,并查看文件时间

$ cd /tmp

$ touch hello

$ ls -l hello

23)修改hello文件,将文件时间整为5天前

$ touch -d “5 days ago” hello

  • chown命令:修改文件所有者权限

24)将hello文件所有者改为root帐号,并查看属性

$ sudo chown root /tmp/hello

$ ls -l /tmp/hello

  • find命令:文件查找

25)找出主文件夹下文件名为.bashrc的文件

$ find ~ -name .bashrc

  • tar命令:压缩命令

26)在根目录“/”下新建文件夹test,然后在根目录“/”下打包成test.tar.gz

$ sudo mkdir /test

$ sudo tar -zcv -f /test.tar.gz test

27)把上面的test.tar.gz压缩包,解压缩到“/tmp”目录

$ sudo tar -zxv -f /test.tar.gz -C /tmp

  • grep命令:查找字符串

28)从“~/.bashrc”文件中查找字符串'examples'

$ grep -n 'examples' ~/.bashrc

  • 配置环境变量

29)请在“~/.bashrc”中设置,配置Java环境变量

首先,使用vim编辑器打开文件“~/.bashrc”,命令如下:

$ vim ~/.bashrc

然后,在该文件的最上面加入一行如下形式的语句:

export JAVA_HOME=JDK安装路径

         最后,执行如下命令使得环境变量配置生效:

$ source ~/.bashrc

30)查看JAVA_HOME变量的值

$ echo $JAVA_HOME

使用root用户登录,添加一个新用户hadoop。设置hadoop用户的密码并授予hadoop用户sudo权限。

[root@localhost ~]$ useradd hadoop

[root@localhost ~]$ passwd hadoop

[root@localhost ~]$ chmod u+w /etc/sudoers

[root@localhost ~]$ vim /etc/sudoers

# 在root ALL=(ALL) ALL 下 添加hadoop ALL=(ALL) ALL

[root@localhost ~]$ chmod u-w /etc/sudoers

3.  设置静态IP

VMware默认使用动态的IP,但是由于Hadoop集群是使用机器名进行定位的,在/etc/hosts中配置了机器名和IP的映射,如果IP不断变化,则需要不断修改配置文件,所以这里需要把IP设置为静态,方便后面的操作。

1)修改/etc/sysconfig/network-scripts/ifcfg-eth0

[root@localhost ~]$ vim /etc/sysconfig/network-scripts/ifcfg-eth0

# 修改内容如下:

DEVICE=eth0

BOOTPROTO=static

IPADDR=192.168.222.131

NETMASK=255.255.255.0

GATEWAY=192.168.222.2

# HWADDR=00:0C:29:C3:34:BF  # 这个需要根据自己的机器进行设置

ONBOOT=yes

TYPE=Ethernet

IPV6INIT=no

DNS1=192.168.222.2

2)修改/etc/sysconfig/network

[root@localhost ~]$ vim /etc/sysconfig/network

NETWORKING=yes

NETWORKING_IPV6=no

HOSTNAME=localhost.localdomain

GATEWAY=192.168.222.2

3)修改DNS信息

[root@localhost ~]$ vim/etc/resolv.conf

nameserver 192.168.222.2

search bogon

#使配置信息立即生效

[root@localhost ~]$ source /etc/resolv.conf

#重启网络服务

[root@localhost ~]$ service network restart

[也可以在网络连接面板上进行配置] 

4)关闭防火墙并修改其启动策略为不开机启动

[root@localhost ~]$ service iptables stop

#防火墙不开机启动

[root@localhost ~]$ chkconfig iptables off

4. 安装JDK

1)使用yum search jdk在线查找jdk列表,任意选择一个版本进行安装,这里安装“java-1.7.0-openjdk-devel.x86_64”。

[root@localhost ~]$ yum search jdk

[root@localhost ~]$ yum install java-1.7.0-openjdk-devel.x86_64 –y

【注:可以下载java软件解压缩即可】

2)配置Java环境变量。

# 查询JDK路径

[root@localhost ~]$ whereis java

[root@localhost ~]$ ll /usr/bin/java

[root@localhost ~]$ ll /etc/alternatives/java #这是可以看到JDK路径了

#修改配置文件

[root@localhost ~]$ vim /etc/profile

#在末尾追加

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64

export MAVEN_HOME=/home/hadoop/local/opt/apache-maven-3.3.1

export JRE_HOME=$JAVA_HOME/jre

export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

#保存配置后使用source命令是配置立即生效

[root@localhost ~]$ source /etc/profile

3)使用java –version命令查看环境变量配置是否成功。

[root@localhost ~]$ java -version

OpenJDK Runtime Environment (rhel-2.5.4.0.el6_6-x86_64 u75-b13)

OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)

至此,我们已经完成JDK的安装和配置,接下来使用VMWare克隆两台机器,并分别设置静态IP地址为192.168.222.132,192.168.222.133。

注意:克隆完成,启动机器后,会出现没有网络设备信息,无法连接网络的情况,解决方案如下:

删除/etc/udev/rules.d/70-persistent-net.rules,修改/etc/sysconfig/network-scripts/ifcfg-eth0,注释硬件地址那一行,重启系统。

5.  配置ssh免登录

1)启动三台机器,分别修改名为master、slave1、slave2,重启系统。

[root@localhost ~]$ vim /etc/sysconfig/network

# 修改内容如下

NETWORKING=yes

NETWORKING_IPV6=no

HOSTNAME=master

2)修改master上的/etc/hosts。

[hadoop@master ~]$ sudo vim /etc/hosts

# 内容如下

192.168.222.131 master

192.168.222.132 slave1

192.168.222.133 slave2

3)将hosts文件拷贝到slave1和slave2

[hadoop@master ~]$ sudo scp /etc/hosts root@slave1:/etc

[hadoop@master ~]$ sudo scp /etc/hosts root@slave2:/etc

4)在master机器上使用hadoop用户登录(确保接下来的操作都是通过hadoop用户执行)。执行$ ssh-keygen -t rsa命令产生公钥。

[hadoop@master ~]$ ssh-keygen -t rsa

Generating public/private rsa key pair.

 Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):

 Enter passphrase (empty for no passphrase):

 Enter same passphrase again:

 Your identification has been saved in /home/hadoop/.ssh/id_rsa.

 Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.

 The key fingerprint is:

 7b:75:98:eb:fd:13:ce:0f:c4:cf:2c:65:cc:73:70:53 hadoop@master

 The key's randomart image is:

 +--[ RSA 2048]----+

| E|

 | .|

 | ...|

 | + =.|

 | S + +.*|

 | . . + Bo|

 | . . . = =|

 | . . . * |

 | . ..=|

 +-----------------+

5)将公钥拷贝到slave1和slave2。

[hadoop@master ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub slave1

# 输入hadoop@slave1的密码

[hadoop@master ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub slave2

# 输入hadoop@slave2的密码

注:第一,将公钥拷贝到自身,[hadoop@master ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub master

第二,为了使得masterslave1slave2能互通,在slave1slave2上做类似操作。

6)再次登录,已经可以不需要密码可以登录slave1,slave2。

[hadoop@master ~]$ ssh slave1

Last login: Wed Mar 25 14:40:41 2015 from master

[hadoop@slave1 ~]$

6.  安装Hadoop

1)在Hadoop官网网站,下载稳定版的并且已经编译好的二进制包,并解压缩。

[hadoop@master ~]$ wget     http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz

[hadoop@master ~]$ tar -zxf hadoop-2.6.0.tar.gz -C ~/local/opt

[hadoop@master ~]$ cd ~/local/opt/hadoop-2.6.0

2)设置环境变量。

[hadoop@master ~]$ vim ~/.bashrc

export HADOOP_PREFIX=$HOME/local/opt/hadoop-2.6.0

export HADOOP_COMMON_HOME=$HADOOP_PREFIX

export HADOOP_HDFS_HOME=$HADOOP_PREFIX

export HADOOP_MAPRED_HOME=$HADOOP_PREFIX

export HADOOP_YARN_HOME=$HADOOP_PREFIX

export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop

export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin

3)修改配置文件(vim $HADOOP_PREFIX/etc/hadoop/hadoop-env.sh),添加下面的命令(这里需要注意JAVA_HOME的设置需要根据自己机器的实际情况进行设置)。

export JAVA_HOME=/usr/lib/jvm/java

4)修改配置文件(vim $HADOOP_PREFIX/etc/hadoop/core-site.xml)。

<configuration>

 <property>

  <name>fs.defaultFS</name>

  <value>hdfs://master</value>

 </property>

  <property>

    <name>hadoop.tmp.dir</name>

    <value>/home/hadoop/local/var/hadoop/tmp/hadoop-${user.name}</value>

  </property>

</configuration>

5)修改配置文件(vim $HADOOP_PREFIX/etc/hadoop/hdfs-site.xml)。

<configuration>

 <property>

  <name>dfs.datanode.data.dir</name>

  <value>file:///home/hadoop/local/var/hadoop/hdfs/datanode</value>

 </property>

 <property>

  <name>dfs.namenode.name.dir</name>

  <value>file:///home/hadoop/local/var/hadoop/hdfs/namenode</value>

 </property>

 <property>

  <name>dfs.namenode.checkpoint.dir</name>

  <value>file:///home/hadoop/local/var/hadoop/hdfs/namesecondary</value>

 </property>

 <property>

  <name>dfs.replication</name>

  <value>2</value>

 </property>

</configuration>

6)修改配置文件(vim $HADOOP_PREFIX/etc/hadoop/yarn-site.xml)。

<configuration>

  <property>

    <name>yarn.nodemanager.aux-services</name>

    <value>mapreduce_shuffle</value>

  </property>

  <property>

    <name>yarn.resourcemanager.hostname</name>

    <value>master</value>

  </property>

</configuration>

7)修改配置文件(vim $HADOOP_PREFIX/etc/hadoop/mapred-site.xml)。

<configuration>

  <property>

    <name>mapreduce.framework.name</name>

    <value>yarn</value>

  </property>

   <property>

     <name>mapreduce.jobtracker.staging.root.dir</name>

     <value>/user</value>

   </property>

<property>

<name>mapreduce.jobhistory.address</name>

<value>master:10020</value>

</property>

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>master:19888 </value>

</property>

</configuration>

7*)修改配置文件(vim $HADOOP_PREFIX/etc/hadoop/slaves)。

slave1

slave2

slaves文件是指定HDFS上有哪些DataNode节点。

7**)分发Hadoop文件

首先在其他两台机器上创建存放Hadoop的目录

[hadoop@slave1~]$ mkdir local

[hadoop@slave1~]$ cd local

[hadoop@slave1 local]$ mkdir opt

[hadoop@slave2~]$ mkdir local

[hadoop@slave2~]$ cd local

[hadoop@slave2 local]$ mkdir opt

通过Scp分发

Hadoop根目录下的share/doc目录是存放的hadoop的文档,文件相当大,建议在分发之前将这个目录 删除掉,可以节省硬盘空间并能提高分发的速度。

doc目录大小有1.6G

[hadoop@master ~]$ rm -r local/opt/hadoop-2.6.0/share/doc

[hadoop@master ~]$ scp -r local/opt/hadoop-2.6.0 hadoop@slave1:local/opt

[hadoop@master ~]$ scp -r local/opt/hadoop-2.6.0 hadoop@slave2:local/opt

8)格式化hdfs。

[hadoop@master ~]$ hdfs namenode -format

如果需要重新格式化NameNode,需要先将原来NameNodeDataNode下的文件全部删除,不然会报错, NameNode DataNode 所在1目录是在 coresite.xml hadoop.tmp.dirdfs. namenode. name. dir dfs.datanode.data.dir 属性配置的。

因为每次格式化,默认是创建一个集群ID,并写入NameNodeDataNodeVERSION文件中(VERSION文件所 在目录为dfs/name/currentdfs/data/current),重新格式化时,默认会生成一个新的集群ID,如果不删 除原来的目录,会导致namenode中的VERSION文件中是新的集群ID,而DataNode中是旧的集群ID,不一致时 会报错。

另一种方法是格式化时指定集群ID参数,指定为旧的集群ID

9)启动hadoop集群,启动结束后使用jps命令列出守护进程验证安装是否成功。

#启动HDFS

[hadoop@master ~]$ start-dfs.sh

#启动Yarn

[hadoop@master ~]$ start-yarn.sh

【注:也可以直接使用start-all.sh启动Hadoop

# master主节点:

[hadoop@master ~]$ jps

3717 SecondaryNameNode

3855 ResourceManager

3539 NameNode

3903 JobHistoryServer

4169 Jps

#slave1节点

[hadoop@slave1 ~]$ jps

2969 Jps

2683 DataNode

2789 NodeManager

# slave2 节点

[hadoop@slave2 ~]$ jps

2614 Jps

2363 DataNode

2470 NodeManager

发现JobHistoryServer没有启动,所以需要执行

[hadoop@master hadoop-2.6.0]$ sbin/mr-jobhistory-daemon.sh start historyserver

starting historyserver, logging to /home/hadoop/local/opt/hadoop-2.6.0/logs/mapred-hadoop-historyserver-master.out

Web查看

http://192.168.42.128:50070/

10)关闭hadoop集群,关闭结束后使用jps命令列出守护进程验证关闭是否成功。

[hadoop@master hadoop-2.6.0]$ stop-all.sh

[hadoop@master hadoop-2.6.0]$ sbin/mr-jobhistory-daemon.sh stop historyserver

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 全球性“微软蓝屏”事件反思:如何预防大规模系统故障
  • LLM模型与实践之基于 MindSpore 实现 BERT 对话情绪识别
  • k210相关图像操作
  • python-爬虫实例(4):获取b站的章若楠的视频
  • leetcode 513.找树左下角的值
  • 分布式锁-redisson锁重试和WatchDog机制
  • LabVIEW多线圈电磁式振动发电机测试
  • Python3 第三十九课 -- 实例八
  • 对于相同网段的IP,部分无法ping通问题
  • 测试管理工具、自动化测试工具、跨浏览器测试工具 推荐
  • ES中聚合查询之date_histogram查询出现key_as_string 和 key含义
  • 从零开始创建vue3项目——包含项目初始化、element-plus、eslint、axios、router、pinia、echarts
  • 爬虫学习1:初学者简单了解爬虫的基本认识和操作(详细参考图片)
  • php_webshell免杀--从0改造你的AntSword
  • MySQL补充性文件
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • iOS | NSProxy
  • Java Agent 学习笔记
  • js作用域和this的理解
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Lucene解析 - 基本概念
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • Selenium实战教程系列(二)---元素定位
  • spring cloud gateway 源码解析(4)跨域问题处理
  • 从零开始在ubuntu上搭建node开发环境
  • 动态魔术使用DBMS_SQL
  • 聊聊directory traversal attack
  • 区块链分支循环
  • 试着探索高并发下的系统架构面貌
  • 用Visual Studio开发以太坊智能合约
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #WEB前端(HTML属性)
  • #考研#计算机文化知识1(局域网及网络互联)
  • (9)目标检测_SSD的原理
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (补充)IDEA项目结构
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (规划)24届春招和25届暑假实习路线准备规划
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • *** 2003
  • *算法训练(leetcode)第四十五天 | 101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题、104. 建造最大岛屿
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .NET CF命令行调试器MDbg入门(一)
  • .net core 连接数据库,通过数据库生成Modell
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .net FrameWork简介,数组,枚举
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .net和php怎么连接,php和apache之间如何连接
  • .NET周刊【7月第4期 2024-07-28】
  • @取消转义
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [ 物联网 ]拟合模型解决传感器数据获取中数据与实际值的误差的补偿方法