本机环境为
java:jdk-8u251-linux-x64.tar jdk下载链接
ubuntu:ubuntu-18.04.4-desktop-amd64
hadoop:hadoop-3.2.0.tar hadoop
mysql:5.7.30 ubuntu安装
JDBC:mysql-connector-java-5.1.47.tar JDBC
hive:apache-hive-3.1.2-bin.tar hive下载 快速下载地址
一、准备工作
创建Hadoop用户
1
2
3
4
5sudo useradd -m hadoop -s /bin/bash #创建hadoop用户,并使用/bin/bash作为shell sudo passwd hadoop #为hadoop用户设置密码 sudo adduser hadoop sudo #为hadoop用户增加管理员权限 su - hadoop #切换当前用户为用户hadoop sudo apt-get update #更新hadoop用户
安装SSH
1
2
3
4
5sudo apt-get install openssh-server #安装SSH server ssh localhost #登陆SSH,第一次登陆输入yes exit #退出登录的ssh localhost cd ~/.ssh/ #如果没法进入该目录,执行一次ssh localhost ssh-keygen -t rsa
第一次回车是让KEY存于默认位置,以方便后续的命令输入。
第二次和第三次是确定passphrase。
1
2cat ./id_rsa.pub >> ./authorized_keys #加入授权 ssh localhost #此时已不需密码即可登录localhost,并可见下图。如果失败则可以搜索SSH免密码登录来寻求答案
二、安装JDK
1
2
3
4
5sudo tar zxvf jdk*** -C /opt/ #/解压到/usr/lib/jvm目录下 sudo mv /opt/jdk* java #重命名为java sudo vim ~/.bashrc #给JDK配置用户环境变量 or sudo vim /etc/profile #给JDK配置系统环境变量
1
2
3
4
5#Java Environment export JAVA_HOME=/opt/java export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
1
2
3
4source ~/.bashrc or source /etc /profile java -version #检测是否安装成功,查看java版本
三、安装Hadoop
1
2
3sudo tar -zxvf hadoop-3.2.0.tar.gz -C /opt/ #解压到/usr/local目录下 sudo mv /opt/hadoop-3.2.0 hadoop #重命名为hadoop sudo chown -R hadoop ./hadoop #修改文件权限
1
2
3
4
5#Hadoop Environment export HADOOP_HOME=/opt/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
四、伪分布式配置
Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode。
同时,读取的是 HDFS 中的文件。Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件core-site.xml和hdfs-site.xml以及一个路径变量hadoop-env.sh
vim hadoop-env.sh
1export JAVA_HOME=/opt/java
vim core-site.xml
1
2
3
4
5
6
7
8
9
10
11<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:/opt/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
vim hdfs-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/opt/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/opt/hadoop/tmp/dfs/data</value> </property> <property> <name>dfs.http.address</name> <value>0.0.0.0:50070</value> </property> </configuration>
Hadoop 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件),因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项。
此外,伪分布式虽然只需要配置fs.defaultfs和dfs.replication就可以运行(可参考官方教程),不过若没有配置hadoop.tmp.dir参数,则默认使用的临时目录为/tmp/hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行format才行。所以我们进行了设置,同时也指定dfs.namenode.name.dir和dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。
执行 NameNode 的格式化
1./bin/hdfs namenode -format
启动namenode和datanode进程,并查看启动结果
1
2$ ./sbin/start-dfs.sh $ jps
启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: “NameNode”、”DataNode” 和 “SecondaryNameNode”
此时也有可能出现要求输入localhost密码的情况 ,如果此时明明输入的是正确的密码却仍无法登入,其原因是由于如果不输入用户名的时候默认的是root用户,但是安全期间ssh服务默认没有开root用户的ssh权限.
1$vim /etc/ssh/sshd_config
检查PermitRootLogin 后面是否为yes,如果不是,则将该行代码 中PermitRootLogin 后面的内容删除,改为yes,保存。之后输入下列代码重启SSH服务
1$ /etc/init.d/sshd restart
五、安装mysql
ubuntu 18下默认的mysql是5.7
1
2apt-cache search mysql | grep mysql-serve sudo apt-get install mysql-server
给账号权限
可以直接用root账户
1
2
3
4
5
6sudo mysql -u root GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY "hive"; select user, plugin from mysql.user; update mysql.user set authentication_string=PASSWORD('hive'), plugin='mysql_native_password' where user='root'; flush privileges; sudo service mysql restart
也可以创建一个hive账户
1
2
3
4
5
6
7
8
9mysql -u root -p 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"); GRANT ALL PRIVILEGES ON *.* TO 'hive'@'localhost' IDENTIFIED BY 'hive'; flush privileges; sudo service mysql restart
六、安装Hive
1
2$ sudo tar zxf apache-hive-3.1.2-bin.tar.gz -C /opt/ $ sudo mv /opt/apache-hive-3.1.2-bin /opt/hive
vim ~/.bashrc
vim /etc/profile
1
2
3
4#Hive Enviroment export HIVE_HOME=/opt/hive export PATH=$PATH:$HIVE_HOME/bin
source ~/.bashrc
source /etc/profile
所有Hive的配置是在/opt/hive/conf目录下,进入这个目录,我们需要先基于模板新建hive-env.sh文件:
1
2
3cp hive-env.sh.template hive-env.sh sudo chmod 777 hive-env.sh vim hive-env.sh
1HADOOP_HOME=/opt/hadoop
1
2
3cp hive-default.xml.template hive-site.xml sudo chmod 777 hive-site.xml vim hive-site.xml
可用vim下/或者?关键字,进行搜索
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35修改连接配置: <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&useSSL=false</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>root or 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> 修改临时文件夹的路径,改为自己设置路径: <property> <name>hive.exec.local.scratchdir</name> <value>/home/hadoop/hdp</value> <description>Local scratch space for Hive jobs</description> </property> <property> <name>hive.downloaded.resources.dir</name> <value>/home/hadoop/hdp</value> <description>Temporary local directory for added resources in the remote file system.</description> </property>
1
2mkdir -p /home/hadoop/hdp chmod -R 775 /home/hadoop/hdp
异常处理 将 换成 #8
sudo chmod 777 /opt/hive/bin/hive-config.sh
vim /opt/hive/bin/hive-config.sh
1
2
3export JAVA_HOME=opt/java export HADOOP_HOME=/opt/hadoop export HIVE_HOME=/opt/hive
接下来将JDBC驱动移动到master服务器上
1
2tar -zxvf mysql-connector-java-5.1.47.tar.gz cp mysql-connector-java-5.1.47/mysql-connector-java-5.1.40-bin.jar /opt/hive/lib/
启动Hadoop,在Hadoop中创建Hive需要用到的目录并设置好权限:
1
2hadoop fs -mkdir /tmp hadoop fs -chmod g+w /tmp
初始化meta数据库
1
2
3
4$ cd /opt/hive/bin $ ./schematool -dbType mysql -initSchema $ ./schematool -dbType mysql -info $ hive
开启hive三步骤:
1
2
3
4
5#开启hadoop cd /opt/hadoop/ ./sbin/start-all.sh #开启hive hive
参考文章:
https://zhuanlan.zhihu.com/p/107497771
https://zhuanlan.zhihu.com/p/27882223
https://zhuanlan.zhihu.com/p/146432186
最后
以上就是敏感小天鹅最近收集整理的关于ubuntu搭建hadoop、mysql、hive环境本机环境为的全部内容,更多相关ubuntu搭建hadoop、mysql、hive环境本机环境为内容请搜索靠谱客的其他文章。
发表评论 取消回复