前言
由于我写的上一篇blog,《hadoop开发环境配置手册》,在环境变量的配置方便出现了问题,导致hadoop用户与主用户的环境变量出现了问题,甚至出现重启之后无法登陆ubuntu图形化界面的情况,所以重新更新了配置手册,来解决这个bug。
设置ssh免密登陆
安装SSH,设置SSH无密码登陆
$ sudo apt-get install openssh-server #安装SSH server
$ ssh localhost #登陆SSH,第一次登陆输入yes
$ exit #退出登录的ssh localhost
$ cd ~/.ssh/ #如果没法进入该目录,执行一次ssh localhost
$ ssh-keygen -t rsa #之后联系敲击三次回车
$ cat ./id_rsa.pub >> ./authorized_keys #加入授权
$ ssh localhost #此时已不需密码即可登录localhost
$ exit #退出登录的ssh localhost
安装jdk1.8
jdk的下载
下载官网:
Java SE Development Kit 8www.oracle.com
如果因为网络问题下载失败的话,可以通过百度云下载:
链接:
https://pan.baidu.com/s/1CbHV1Ly2nxGeu3Mx-eSiAApan.baidu.com
提取码: zt7a
jdk的安装
$ mkdir /usr/local/jvm #创建jvm文件夹
$ sudo tar zxvf jdk-8u241-linux-x64.tar.gz -C /usr/local/jvm #解压到/usr/lib/jvm目录下
$ cd /usr/local/jvm #进入该目录
$ mv jdk1.8.0_241 java #重命名为java
环境变量的配置
$ vim ~/.bashrc #给JDK配置环境变量
在.bashrc文件添加如下指令:
export JAVA_HOME=/usr/local/jvm/java
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
在文件修改完毕以后,输入代码:
$ source ~/.bashrc #使新配置的环境变量生效
$ java -version #检测是否安装成功,查看java版本
安装hadoop 2.9.2
hadoop的下载
下载网址:
404 Not Foundmirrors.hust.edu.cn
hadoop的安装
$ sudo tar -zxvf hadoop-2.9.2.tar.gz -C /usr/local #解压到/usr/local目录下
$ cd /usr/local
$ sudo mv hadoop-2.9.2 hadoop #重命名为hadoop
$ sudo chown -R flynn./hadoop #修改文件权限
环境变量的配置
$ vim ~/.bashrc #给JDK配置环境变量
在.bashrc文件添加如下指令:
export HADOOP_HOME=/usr/local/hadoop
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
在文件修改完毕以后,输入代码:
$ source ~/.bashrc #使新配置的环境变量生效
$ hadoop version #检测是否安装成功,查看hadoop版本
###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 的方式来实现。
jdk路径添加
首先将jdk1.8的路径添(export JAVA_HOME=/usr/lib/jvm/java )加到hadoop-env.sh文件
cd /usr/local/hadoop/etc/hadoop
sudo vim hadoop-env.sh
core-site.xml文件修改
修改core-site.xml文件为下:
<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>
hdfs-site.xml文件修改
修改 hdfs-site.xml文件为下:
<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 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件)。
因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项。
此外,伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(可参考官方教程)。
不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。
所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。
hadoop启动
$ cd /usr/local/hadoop
$ ./bin/hdfs namenode -format #namenode格式化
$ ./sbin/start-dfs.sh #启动namenode和datanode进程,并查看启动结果
$ jps
成功启动后,可以访问 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。
hadoop启动之疑难杂症
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your plat
解决方法:
在环境变量中添加
expor tHADOOP_OPTS = "-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"
root@localhost's password:localhost:permission denied,please try again
解决方法:
1. 安装 open ssh
$ sudo apt-get install openssh-server
2. 修改root密码
$ sudo passwd root
3. 编辑配置文件,允许以 root 用户通过 ssh 登录
$ sudo vi /etc/ssh/sshd_config
4. 找到:PermitRootLogin prohibit-password禁用
添加:PermitRootLogin yes
5. 重启ssh
$ sudo service ssh restart
安装mysql
mysql的下载与安装
使用以下命令即可进行mysql安装,注意安装前先更新一下软件源以获得最新版本:
$ sudo apt-get update #更新软件源
$ sudo apt-get install mysql-server #安装mysql
上述命令会安装以下包:
apparmor
mysql-client-5.7
mysql-common
mysql-server
mysql-server-5.7
mysql-server-core-5.7
因此无需再安装mysql-client等。
mysql登录之疑难杂症
报错
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
原因
Ubuntu18 下安装新版本mysql,安装时root密码是随机的,因此会出现上述错误。
解决办法
1. 查看账户信息
在我们下载安装MySQL的时候系统给我们创建了一个用户,打开 /etc/mysql/debian.cnf查看账户信息,找到client的user和password。
2. 在终端输入
mysql -u debian-sys-maint -p
然后回车输入 password的内容,这样就能进入了mysql。
3. 查看user表
在mysql中输入
select user, plugin from mysql.user;
查看user表
4. 修改root密码
输入以下命令
update mysql.user set authentication_string=PASSWORD('123'), plugin='mysql_native_password' where user='root';
然后刷新
flush privileges;
安装hive
hive的下载
1. 下载hive
地址:
Index of /apache/hivemirror.bit.edu.cn
2. 下载mysql-connector-java
地址:
https://dev.mysql.com/downloads/connector/j/dev.mysql.com
配置mysql
mysql -u root -p; #以root权限登陆mysql
create database hive;
use hive;
create table user(Host char(20),User char(10),Password char(20));
insert into user(Host,User,Password) values("localhost","hive","hive"); #建立hive用户密码为hive
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'localhost' IDENTIFIED BY 'hive';
FLUSH PRIVILEGES;
hive安装配置
$ tar –zxvf apache-hive-2.3.4-bin.tar.gz /usr/local/
$ sudo mv apache-hive-2.3.4-bin.tar.gz hive
环境变量的配置
$ vim ~/.bashrc #给hive配置环境变量
在.bashrc文件添加如下指令:
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
在文件修改完毕以后,输入代码:
$ source ~/.bashrc #使新配置的环境变量生效
修改hive/conf下的几个模板
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
更改hive-env.sh文件,指定hadoop的安装路径
HADOOP_HOME=/usr/local/hadoop
更改hive-site.xml文件,指定数据库的相关信息
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
<description>password to use against metastore database</description>
</property>
更改hive/bin下的hive-config.sh文件
export JAVA_HOME=/usr/java/jdk1.8.0_201
export HADOOP_HOME=/usr/local/hadoop
export HIVE_HOME=/usr/local/hive
mysql-connector-java 配置
解压mysql-connector-java-5.1.47.tar.gz
tar -zxvf mysql-connector-java-5.1.47.tar.gz /usr/local
将文件中mysql-connector-java-5.1.47.jar 包copy到hive/lib目录下
初始化hive数据库
schematool -dbType mysql -initSchema