环境准备
需要的基础环境
maven 3.6.0jdk 1.8.0_131
开启 mac 的远程登录
若要远程登录这台电脑,请键入“ssh wangyue@192.168.40.132”。
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
复制代码
验证 ssh
mac 上 hadoop 安装
下载 hadoop jar 包
hadoop-2.7.2.tar.gz
新建目录:存放安装的 hadoop 应用
mkdir /Applications/bigsoft/hadoop-2.7.2
复制代码
新建目录;存放应用的数据文件
mkdir /users/wangyue/Data
复制代码
解压
tar -zxvf /Users/wangyue/Downloads/hadoop-2.6.0.tar -C /users/wangyue/App
复制代码
添加 Hadoop 环境变量
vim ~/.bash_profile
# hadoop
export HADOOP_HOME=/Users/wangyue/App/hadoop-2.6.0
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
退出编辑模式,使用 :wq 保存修改,然后运行 source 命令使文件中的修改立即生效:
source ~/.bash_profile
复制代码
查看 hadoop 版本: hadoop version
修改 hadoop 的配置文件
需要修改的 Hadoop 配置文件都在/Users/wangyue/App/hadoop-2.6.0/etc/hadoop/下,包括:
hadoop-env.sh core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml
下面开始进行配置:
查看 java_home
进入该路径 cd /usr/libexec
运行脚本
./java_home
输出的路径
/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
修改 hadoop-env.sh 文件
设置 JAVA_HOME 的路径
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home
修改 core-site.xml 文件
默认情况下,Hadoop 将数据保存在/tmp 下,当重启系统时,/tmp 中的内容将被自动清空, 所以我们需要制定自己的一个 Hadoop 的目录,用来存放数据。另外需要配置 Hadoop 所使用的默认文件系统,以及 Namenode 进程所在的主机。
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<!--用来指定hadoop运行时产生文件的存放目录 自己创建-->
<property>
<name>hadoop.tmp.dir</name>
<value>file:///Applications/bigsoft/hadoop-2.7.2/Datadir/hadoop/tmp</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
复制代码
配置文件系统 hdfs-site.xml
该文件指定与 HDFS 相关的配置信息。需要修改 HDFS 默认的块的副本属性,因为 HDFS 默认 情况下每个数据块保存 3 个副本,而在伪分布式模式下运行时,由于只有一个数据节点,所 以需要将副本个数改为 1;否则 Hadoop 程序会报错。
vim hdfs-site.xml 修改配置文件
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!--不是root用户也可以写文件到hdfs-->
<property>
<name>dfs.permissions</name>
<value>false</value> <!--关闭防火墙-->
</property>
<!-- name node 存放 name table 的目录 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/Applications/bigsoft/hadoop-2.7.2/Datadir/hadoop/tmp/dfs/name</value>
</property>
<!-- data node 存放数据 block 的目录 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/Applications/bigsoft/hadoop-2.7.2/Datadir/hadoop/tmp/dfs/data</value>
</property>
复制代码
配置计算框架 mapred-site.xml
在该配置文件中指定与 MapReduce 作业相关的配置属性,需要指定 JobTracker 运行的主机 文件夹中并没有 mapred-site.xml 文件,但提供了模板 mapred-site.xml.template 将其重命名为 mapred-site.xml 即可
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
复制代码
修改配置文件
<property>
<!--指定mapreduce运行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
复制代码
配置文件系统 yarn-site.xml
vim yarn-site.xml 修改配置文件
<!-- Site specific YARN configuration properties -->
<property>
<!-- mapreduce 执行 shuffle 时获取数据的方式 -->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>localhost:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>localhost:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>localhost:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>localhost:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>localhost:18088</value>
</property>
复制代码
Hadoop namenode 格式化
成功则会看到”successfully formatted”和”Exitting with status 0”的提示,若为 “Exitting with status 1” 则是出错。
启动 Hadoop 集群
/Users/wangyue/App/hadoop-2.6.0/sbin
./start-all.sh
复制代码
执行命令后,提示出入 yes/no 时,输入 yes 启动所有的 hadoop 服务,包括 hdfs 和 yarn
具体进程包含为下
63617 DataNode
63810 ResourceManager
63547 NameNode
63916 Jps
63885 NodeManager
58621 RemoteMavenServer
63711 SecondaryNameNode
复制代码
同时启动中可能会出现问题、继续向下看,下方会有描述。
查看进程是否启动
1、在 Hadoop 的终端执行 jps 命令,在打印结果中会看到 5 个进程,分别是 namenode、 secondarynamenode、datanode、resourcemanager、nodemanage。 如果出现 了这 5 个进程表示主节点进程启动成功。
2、Web UI 查看集群是否成功启动,浏览器中打开 http://localhost:50070/,以及 http://localhost:18088/;检查 namenode 和 datanode 是否正常,检查 Yarn 是否正常。
解除 save 模式
bin/hadoop dfsadmin -safemode leave
//在bin下执行
//若配置环境变量,使用以下命令
复制代码
用户可以通过 dfsadmin -safemode value 来操作安全模式,参数 value 的说明如下:
enter - 进入安全模式
leave - 强制NameNode离开安全模式
get - 返回安全模式是否开启的信息
wait - 等待,一直到安全模式结束
复制代码
问题:
1,启动start-all.sh 输密码需要配置 ssh localhost
2,提交 wordcount 失败报错为
/bin/bash: /Library/Internet: No such file or directory
复制代码
需要检查 java_home 安装是否正确,一般是 mac 下需要注意自带的和自己安装的不同。
配置 hive
前提是先将 hive 源码编译完成
需要进行 hive 配置,包括 hadoop 的位置,hive 元数据初始化
配置 hadoop
切换到刚才编译成功后的 target 目录下的 hive 的目录下,我的是 target/apache-hive-2.3.7-bin/apache-hive-2.3.7-bin,找到配置文件目录 conf
对文件 hive-env.sh 进行编辑,找到 HADOOP_HOME,对其更改成我们安装的 Hadoop 目录,我编译的是 hive-2.3.7,安装的 Hadoop 是 2.6.0,所以,这里列的目录,大家都要相应的改成自己的。
HADOOP_HOME=/Users/wangyue/App/hadoop-2.6.0
保存并退出。
初始化 hive 元数据信息
安装 myql
因为我的是 mac,所以安装比较简单
将 mysql-connector-java.jar 复制的 hive/lib 下
进入到 conf 下,修改 hive-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Autogenerated by Cloudera Manager-->
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true&useSSL=false&autoReconnect=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<!-- 指定 metastore 的地址和端口 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://localhost:9083</value>
</property>
<property>
<name>hive.metastore.client.socket.timeout</name>
<value>3600</value>
</property>
</configuration>
复制代码
然后进入到 bin 目录
执行
./schematool -dbType mysql -initSchema
复制代码
到此,hive 的配置也已完成。
启动 hive,需要使用 metastore 的启动
nohup hive --service metastore &
复制代码
启动 hive debug 监控
切换到 target/apache-hive-2.3.7-bin/apache-hive-2.3.7-bin 目录下,运行以下命令
bin/hive --debug -hiveconf hive.root.logger=DEBUG,console
复制代码
启动成功后,如下:
/Users/wangyue/Desktop/yf_file/work/soft/apache-hive-2.3.7-src/packaging/target/apache-hive-2.3.7-bin/apache-hive-2.3.7-bin
(base) wangyuedeMacBook-Pro:apache-hive-2.3.7-bin wangyue$ ./bin/hive --debug -hivconf hive.root.logger=DEBUG,console
Listening for transport dt_socket at address: 8000
复制代码
这时在运行 hive sql ,便可以在 idea 中看到调试信息
评论