实验目的

学习安装Java

学习配置环境变量

学习设置免密码登陆的方法

掌握Linux环境下时间同步的配置

实验原理

1.Java的安装
  java是大数据的黄金语言,这和java跨平台的特性是密不可分的,大数据的大部分框架,包括hadoop、hbase、tachyon等,都是用java实现,而spark框架的scala语言,也是基于java的虚拟机的,所以安装java是进行大数据处理的第一步。
  java的安装很简单,我们采用编译安装的方法安装。找到jdk的安装包,实验安装包在文档末,同学们可以参考,使用命令"tar zxvf jdk-*.tar.gz -C /home/hadoop/tmp/soft/*"进行安装,由于我们的环境java可能已经安装好了,放在/home/hadoop/tmp/soft/jdk-*下面,所以这一步可以省略。

2.配置环境变量
  配置环境变量就是在整个运行环境都可以使用的变量,而路径添加到PATH类似于在windows平台下将程序添加到注册表,添加某个路径到PATH环境变量后,执行该路径下的文件就不需要输入完整的命令路径而只需要输入命令的文件名。例如,jdk的安装目录为/usr/home/jdk/,那么要查看java的版本,需要输入"/usr/home/jdk/bin/java -version",但是如果将/usr/home/jdk/bin/配置到PATH下,就只需要直接输入"java -version"。所以如果我们经常需要运行的命令,比如hadoop、hive、hbase、spark等,我们可以将他们的路径放在PATH里面,运行方便。
  对于添加给所有用户的环境变量,直接编辑: "/etc/bashrc"或者"/etc/profile",对于添加给某一个用户的环境变量,可以编辑用户home目录下的:" ~/.bashrc "或者"~/.bash_profile"。具体如下:
  编辑 "~/.bashrc"或"~/.bash_profile"在对应的文件添加一行内容:"export 变量名=变量值"就可以,同一个环境变量的多个值用冒号":"隔开,例如我们配置java的环境变量,需要使用"export JAVA_HOME=/usr/home/jdk","export PATH=$JAVA_HOME/bin:$PATH",第一个配置java的安装目录,第二个在原PATH的基础上加上一个java的bin目录。编辑完成后,使用" source 文件名"使环境变量生效。例如:"source .bash_profile"。

3.设置免密码登陆
  我们使用ssh登录的方式有两种,第一是使用密码登录,第二种是配置公钥,分布式的应用,节点之间通信频繁,不可能每次都输入密码,所以需要配置免密码登录。假设有两台节点node6、node7,现在要配置用户root从node6免密码登录到node7,首先需要在node6上生成root的公钥,然后将生成的公钥文件的内容添加到node7的认证文件,这样以后每次使用root从node6,登录到node7的时候,就不需要输入密码了。具体操作如下:

修改映射文件:vi /etc/hosts

生成node6的公钥,使用root登录node6,生成公钥命令为"ssh-keygen -t rsa",输入命令后程序会提示输入路径,直接按enter设置默认的路径。

将生成的公钥复制到node7,生成的公钥文件为"~/.ssh/id_rsa.pub",直接输入"ssh-copy-id node7",这个命令将会把公钥文件放在node7的/root/.ssh目录下,执行完后会让你输入root用户的密码,直接输入后按enter,拷贝完成

检验。在node6上,输入"ssh node7",如果不需要输入密码表明成功,成功后需要输入"exit"退出登录。

4.配置时间同步
  由于分布式的节点通信有心跳机制等需要操作系统时间,我们必须保证每个节点的时间一致,配置的方法是首先安装时间同步服务,启动同步服务,然后添加到定时任务里。
   (1)安装时间同步服务并启动。我们使用yum安装,当然也可以使用其他的安装方式,yum命令为:"yum install -y ntp",安装好后,需要启动,启动命令分为临时启动和每次开机启动。命令为:"service ntpd start"和"chkconfig ntpd on",后者需要是root用户,或者有sudo权限,所以可能失败,不过没关系。
  (2)添加到定时任务列表。linux自带了添加定时任务服务,编辑定时任务比windows略复杂一点。可以添加和不能添加定时任务的用户分写在"/etc/cron.allow"和"/etc/cron.deny"中,更多关于定时任务的资料大家自行查阅资料,添加定时任务使用"crontab -e"命令,编辑方式类似vim命令,每一行的格式为: "minute hour day month week command(命令)",代表的是在这个时间点执行这个命令,我们可以使用*、/、-、,等符号,其中星号(*)代表所有可能的值,逗号(,)代表多个值,中杠(-)代表一个范围,正斜线(/)代表每隔多久。例如"10 6 * * * date "代表每天早上六点十分执行date命令;"0 */2 * * * date "代表每隔两个小时执行一次date命令。
  (3)设置自动时间同步。同步时间的命令为"ntpdate 时间服务器",其中时间服务器可以在网上查询,我们这里使用time.nist.gov,执行"ntpdate time.nist.gov",会同步时间,我们需要每隔十分钟执行一次,所以先输入:"crontab -e",然后读入"*/10 * * * * /usr/sbin/ntpdate time.nist.gov | logger -t NTP",代表每隔十分钟同步一次,并把日志放进用户邮箱。

实验环境

1.操作系统
  操作机1:Linux_Centos
  操作机2:Linux_Centos
  操作机3:Windows_7
  操作机1默认用户名:root,密码:123456
  操作机2默认用户名:root,密码:123456
  操作机3默认用户名:hongya,密码:123456

2.Crontab
  Crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行。crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。
  注:crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程。

  使用权限:
  root用户和crontab文件的所有者

  语法:
  crontab \[\-e \[UserName\]\|\-l \[UserName\]\|\-r \[UserName\]\|\-v \[UserName\]\|File \]

  参数:

-e [UserName]: 执行文字编辑器来设定时程表,内定的文字编辑器是vi

-r [UserName]: 删除目前的时程表

-l [UserName]: 列出目前的时程表

-v [UserName]:列出用户cron作业的状态

  crontab文件的含义:
  用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

minute   hour   day   month   week   command

其中:

minute: 表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,可以是从1到31之间的任何整数。

month:表示月份,可以是从1到12之间的任何整数。

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

在以上各个字段中,还可以使用以下特殊字符:

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

查看实验步骤

步骤1:使用xshell工具连接两台节点

  1.1输入相应的用户名和密码进入操作机3(win_7),点击xshell工具,点击新建,输入名称为:node6,主机输入操作机1的IP(示例IP:90.10.10.19)。

图1

  1.2点击“用户身份验证”,然后输入操作机1的用户名和密码,点击“确定”。

图2

  1.3会话建立成功,相同方法建立操作机2的会话,名称为node7。然后选中node6,点击“连接”。见下图:

图3

  1.4最后两个节点node6,node7都连接成功。见下图:

图4

步骤2:安装配置环境变量(两台节点都要执行)

  2.1安装java的方法不再描述,配置环境变量,我们配置的是自己用户的环境变量"~/.bash_profile"。

命令:vim ~/.bash_profile

  添加内容为:

配置java的安装目录:export JAVA_HOME=/home/hadoop/soft/jdk1.8.0_121

在原PATH的基础上加上一个java的bin目录:export JAVA_BIN=/home/hadoop/soft/jdk1.8.0_121/bin

图5

  2.2修改完成后,保存退出。上图为node6中的修改,node7中也要进行同样修改,这里就不演示。同学们自行修改。

步骤3:设置免密码登陆

  3.1现在有两台节点,主机名为node6,node7,用户名为:root,需要设置node6到自己的免密码登陆,node6到node7的免密码登陆。首先进行编辑hosts文件。

命令:vi /etc/hosts

  添加映射(hosts中原有映射可以删除,实验中用不到):

90.10.10.19  node6

90.10.10.16  node7

  添加完毕后,按“Esc”键退出编辑模式,再输入“wq”保存退出。

图6

  3.2在node6 上生成公钥。

命令:ssh-keygen -t rsa

  然后按几次“Enter”键。

图7

  3.3将公钥写入node6和node7的认证文件。

命令:ssh-copy-id node6

命令:ssh-copy-id node7

  注意:这两个命令都需要输入对应的root用户的密码:123456

图8

  3.4检查是否能够免密码登陆,检查方法就是直接连上,然后退出。node6上输入:

命令:ssh node6

命令:exit

命令:ssh node7

命令:exit

图9

步骤4:配置时间同步

  4.1安装时间服务。

命令:yum install -y ntp

图10

  4.2首先查看crontab用法。

命令:crontab --help

-e:编辑添加定时任务

-l:列出所有的定时任务

-r:删除用户的定时任务

-i:删除定时任务前进行提示

图11

  4.3添加定时任务。

命令:crontab -e

编辑内容(每隔十分钟更新一次):*/10 * * * * /usr/sbin/ntpdate time.nist.gov | logger -t NTP

图12

  4.3查看任务列表。

命令:crontab -l

图13

吴裕雄--天生自然HADOOP学习笔记:基本环境配置的更多相关文章

  1. 吴裕雄--天生自然HADOOP学习笔记:hadoop集群实现PageRank算法实验报告

    实验课程名称:大数据处理技术 实验项目名称:hadoop集群实现PageRank算法 实验类型:综合性 实验日期:2018年 6 月4日-6月14日 学生姓名 吴裕雄 学号 15210120331 班 ...

  2. 吴裕雄--天生自然HADOOP学习笔记:使用yum安装更新软件

    实验目的 了解yum的原理及配置 学习软件的更新与安装 学习源代码编译安装 实验原理 1.编译安装 前面我们讲到了安装软件的方式,因为linux是开放源码的,我们可以直接获得源码,自己编译安装.例如: ...

  3. 吴裕雄--天生自然HADOOP学习笔记:Shell工具使用

    实验目的 学习使用xshell工具连接Linux服务器 在连上的服务器中进入用户目录 熟悉简单的文件操作命令 实验原理 熟悉shell命令是熟悉使用linux环境进行开发的第一步,我们在linux的交 ...

  4. 吴裕雄--天生自然Hadoop学习笔记:Hadoop简介

    Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储.Hadoop实现了一个分布式文件系统(H ...

  5. 吴裕雄--天生自然 oracle学习笔记:oracle理论学习详解及各种简单操作例子

    1. 数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2. 关于数据库的概念 DB:数据库(存储信息的仓库) DBMS:数据库管理系统(用于管理数据库 ...

  6. 吴裕雄--天生自然MySQL学习笔记:MySQL UPDATE 更新

    如果需要修改或更新 MySQL 中的数据,我们可以使用 SQL UPDATE 命令来操作. 语法 以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法: UPDATE table ...

  7. 吴裕雄--天生自然MySQL学习笔记:MySQL 插入数据

    MySQL 表中使用 INSERT INTO SQL语句来插入数据. 可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据. 以下为向MySQL数据表插入数据通 ...

  8. 吴裕雄--天生自然python学习笔记:python 用pyInstaller模块打包文件

    要想在没有安装 Python 集成环境的电脑上运行开发的 Python 程序,必须把 Python 文件打包成 .exe 格式的可执行 文件. Python 的打包工作 PyInstaller 提供了 ...

  9. 吴裕雄--天生自然python学习笔记:python 用pygame模块动画一让图片动起来

    动画是游戏开发中不可或缺的要素,游戏中的角色只有动起来才会拥有“生命”, 但动画处理也是最让游戏开发者头痛的部分.Pygame 包通过不断重新绘制绘图窗口,短短几行代码就可以让图片动起来! 动画处理程 ...

随机推荐

  1. python练习:编写一个程序,要求用户输入一个整数,然后输出两个整数root和pwr,满足0<pwr<6,并且root**pwr等于用户输入的整数。如果不存在这样一对整数,则输入一条消息进行说明。

    python练习:编写一个程序,要求用户输入一个整数,然后输出两个整数root和pwr,满足0<pwr<6,并且root**pwr等于用户输入的整数.如果不存在这样一对整数,则输入一条消息 ...

  2. windows ,linux永久和临时修改pip源

    临时修改(建议)pypi镜像源方法:如果有untrust 报错,可使用https开头的网站,或加上--trusted 例如: pip install pywin32 -i http://mirrors ...

  3. Net Core解决ZipFile解压中文出现乱码

    一.在main方法中添加 Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); 二.解压添加 //sourceArchiveFi ...

  4. 在工业派上使用opencv库的记录

    1.在工业派linux操作系统环境下,调用OpenCV库,用python写了第一个查看图片的程序 注意:要进入工业派的terminal 参考:https://www.cnblogs.com/magic ...

  5. 拓扑排序板子 hihocoder-1174

    思路 不断删入度为1的点及其出边. 图解 #include <bits/stdc++.h> using namespace std; const int maxn=1e5+10; vect ...

  6. 关于null和空指针异常

    1,null是一个标识符,用来表示不确定的对象,可以将null赋给引用类型变量,但不可以将null赋给基本类型变量 2,null本身不是对象,也不是object的实例,也不知道是什么类型 3,对于集合 ...

  7. Codeforces Round #619 (Div. 2) B. Motarack's Birthday

    Dark is going to attend Motarack's birthday. Dark decided that the gift he is going to give to Motar ...

  8. mxgraph初体验

    最近公司让学习了mxgraph,简单总结一下 (1)mxGraph学习路径 1)API:http://jgraph.github.io/mxgraph/docs/js-api/files/index- ...

  9. Notepad++查看文本文件的总的字符数、GBK字节数、UTF8字节数

    如果其编码是 小结:UTF-8编码下,一个汉字占3字节,GBK编码下,一个汉字占2字节:

  10. iOS 开发之 设计模式【一】原型模式 (Prototype pattern)

    原型模式(Prototype pattern): 定义:使用原型实例指定创建对象的种类,并通过复制这个原型创建对象.也可以理解为模板,在创建新对象的时候,按照模板的方法来复制,避免重复造轮子. 简单来 ...