因为小编在本学期有一门课程须要学习hadoop,须要在ubuntu的linux系统下搭建Hadoop环境,在这个过程当中遇到一些问题,写下这篇博客来记录这个过程,并把分享给你们。java
若是安装 Ubuntu 的时候不是用的 “hadoop” 用户,那么须要增长一个名为hadoop 的用户,首先按打开终端窗口,输入以下命令建立新用户 :node
sudo useradd –m hadoop –s /bin/bash
上面这条命令建立了能够登录的 hadoop 用户,并使用 /bin/bash 做为 shell 接着使用以下命令设置密码,可简单设置为 hadoop,按提示输入两次密码:linux
sudo passwd hadoop
可为 hadoop 用户增长管理员权限,方便部署,避免一些对新手来讲比较棘 手的权限问题:c++
sudo adduser hadoop sudo
SSH 为 Secure Shell 的缩写,是创建在应用层和传输层基础上的安全协议。 SSH 是目前较可靠、专为远程登陆会话和其余网络服务提供安全性的协议。 利用 SSH 协议能够有效防止远程管理过程当中的信息泄露问题。SSH最初是 UNIX系统上的一个程序,后来又迅速扩展到其余操做平台。 SSH是由客 户端和服务端的软件组成,服务端是一个守护进程(daemon),它在后台运 行并响应来自客户端的链接请求,客户端包含ssh程序以及像scp(远程拷 贝)、slogin(远程登录)、sftp(安全文件传输)等其余的应用程序.shell
Hadoop名称节点(NameNode)须要启动集群中全部机器的Hadoop守护进程,这个过 程须要经过SSH登陆来实现。Hadoop并无提供SSH输入密码登陆的形式,所以,为 了可以顺利登陆每台机器,须要将全部机器配置为名称节点能够无密码登陆它们。编程
安装openssh-server( 一般Linux系统会默认安装openssh的客户端软件openssh-client),因此须要本身安装一下服务端。ubuntu
sudo apt-get install openssh-server
输入 cd .ssh目录下,若是没有.ssh文件 输入 ssh localhost生成。windows
cd ~/.ssh/
生成秘钥浏览器
ssh-keygen -t rsa
将Master中生成的密钥加入受权(authorized_keys)安全
cat id_rsa.pub # 查看生成的公钥
cat id_rsa.pub >> authorized_keys # 加入受权 chmod 600 authorized_keys # 修改文件权限,若是不修改文件权限,那么其它用户就能查看该受权
完成后,直接键入“ssh localhost”,能无密码登陆便可,
键入“exit”退出,到此SSH无密码登陆配置就成功了。
由于老师给了咱们的java的jdk安装包,想着不用去ubuntu从新下载,因此就想到了利用scp命令传输Mac的文件到ubuntu,利用这个命令前提是Ubuntu安装了SSH服务器,在以前咱们已经有了这步操做。
利用ifconfig查看ubuntu服务器的局域网IP地址
如下是利用scp命令传输文件的基本格式:
1. 本地文件传输到服务器
从本地将文件传输到服务器 | 从本地将文件夹传输到服务器 |
---|---|
scp[本地文件的路径] [服务器用户名]@[服务器地址]:[服务器上存放文件的路径] | scp -r[本地文件的路径] [服务器用户名]@[服务器地址]:[服务器上存放文件的路径] |
scp /Users/mac/Desktop/test.txt root@192.168.1.1:/root | scp -r /Users/mac/Desktop/test root@192.168.1.1:/root |
2. 服务器文件传输到本地
将服务器上的文件传输到本地 | 将服务器上的文件夹传输到本地 |
---|---|
scp [服务器用户名]@[服务器地址]:[服务器上存放文件的路径] [本地文件的路径] | scp -r [服务器用户名]@[服务器地址]:[服务器上存放文件的路径] [本地文件的路径] |
scp root@192.168.1.1:/root/default/test.txt /Users/mac/Desktop | scp -r root@192.168.1.1:/root/default/test /Users/mac/Desktop |
在选择Linux服务器端的储存文件地址时,因为权限缘由,默认的是在/tmp有权限,能够先把文件放到tmp文件目录下,而后在进行mv 或者scp到其余目录,便可。
scp /Users/xjh/Desktop/jdk-8u221-linux-x64.tar.gz hadoop@172.16.186.128:/tmp
传输速度仍是蛮快的,以下图:
在Ubuntu将jdk移动到咱们新建的java目录下(没建的新建一个就是),到此传输文件成功,能够开始配置Java环境了。
sudo mv /tmp/jdk-8u221-linux-x64.tar.gz usr/java
在java目录中,使用sudo tar命令解压jdk文件;
解压成功后,java目录中会有对应的目录文件存在
使用命令“sudo gedit ~/.bashrc”打开配置文件,在末尾添加如下几行文字,注意本身的jdk版本号。
#set java env export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_221 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
使用命令“source ~/.bashrc”使环境变量生效。
source ~/.bashrc
配置软链接,软链接至关于windows系统中的快捷键,部分软件可能会从/usr/bin目录下查找Java,所以添加该软链接防止其余软件查找不到的状况。
sudo update-alternatives --install /usr/bin/java java /usr/java/jdk1.8.0_221/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/java/jdk1.8.0_221/bin/javac 300
将咱们下载的Hadoop解压到 /usr/local/ 中
sudo tar zxvf tmp/hadoop-3.2.1.tar.gz -C /usr/local
利用cd /usr/local/ 命令切换操做空间,将文件夹名改成hadoop
sudo mv ./hadoop-3.2.1/ ./hadoop
修改文件权限
sudo chown -R hadoop:hadoop ./hadoop
Hadoop 解压后,在Hadoop目录下的etc/hadoop/hadoop-env.sh文件中添加以下的 Java环境信息。
export JAVA_HOME=/usr/java/jdk1.8.0_221而后,保存hadoop-env.sh文件,即完成单机模式的Hadoop基本安装。测试Hadoop是否安装成功,如出现以下图所示的版本信息,便可。
默认状况下,单机模式的Hadoop以Java进程的方式运行,可依次运行以下命令进行进一步测试。
sudo mkdir input sudo cp etc/hadoop/*.xml input
执行下列命令,运行MapReduce程序,完成测试计算。
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.]+'
执行下列命令,查看计算结果。
cat output/*
Hadoop目录下,会有input和output两个新建的文件,output中有上述程序 的运算结果,到此Hadoop单机安装配置成功。
- Hadoop能够在单节点上以伪分布式的方式运行,Hadoop进程以分 离的 Java 进程来运行,节点既做为 NameNode 也做为 DataNode, 同时,读取的是 HDFS 中的文件
- Hadoop的配置文件位于/usr/local/hadoop/etc/hadoop/中,伪分布式 须要修改2个配置文件 core-site.xml 和 hdfs-site.xml
- Hadoop的配置文件是xml格式,每一个配置以声明property的name 和 value 的方式来实现
hadoop目录认识
修改配置文件以前,先看一下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>
<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>
文件名称 | 格式 | 描述 | |
---|---|---|---|
hadoop-env.sh | Bash脚本 | 记录配置Hadoop运行所需的环境变量,以运行 Hadoop | |
core-site.xml | Hadoop配置XML | Hadoop core的配置项,例如HDFS和MapReduce 经常使用的I/O设置等 | |
hdfs-site.xml | Hadoop配置XML | Hadoop的守护进程的配置项,包括NameNode、 SecondaryNameNode和DataNode等 | |
mapred-site.xml | Hadoop配置XML | MapReduce守护进程的配置项,包括JobTracker 和TaskTracker | |
masters | 纯文本 | 运行SecondaryNameNode的机器列表(每行一 个) | |
slaves | 纯文本 | 运行DataNode和TaskTracker的机器列表(每行 一个) | |
hadoop- metrics.properties | Java属性 | 控制metrics在Hadoop上如何发布的属性 |
至此,配置完毕,可是还不能启动,要对hdfs先进行格式化。相似之前的软盘,使用前要先格式化,执行命令:
sudo ./bin/hdfs namenode -format
看到日志信息:即格式化成功。
在咱们name目录(这个目录是咱们本身配置的时候指定的)下也会出现映像文件(fsimage),用于将数据持久化 。
输入如下命令启动Hadoop:
sbin/start-dfs.sh
安装jps
sudo apt install openjdk-11-jdk-headless
安装好以后jps检查角色若是有多个角色,就启动成功。
浏览器访问localhost:9870
本次给你们分享的内容就到这里啦,以为还不错的点个赞支持一下小编,你的确定就是小编前进的动力。另外若是想了解更多计算机专业的知识和技巧的,献上个人我的博客北徯,另外须要各类资料的童鞋,能够关注个人微信公众号北徯,免费的PPT模板,各类资料等你来领。